下面是一段多线程的示例代码
#!/usr/bin/python3
import?_thread
import?time
#?为线程定义一个函数
def?print_time(?threadName,?delay):
???count?=?0
???while?count?<?5:
??????time.sleep(delay)
??????count?+=?1
??????print?("%s:?%s"?%?(?threadName,?time.ctime(time.time())?))
#?创建两个线程
try:
???_thread.start_new_thread(?print_time,?("Thread-1",?2,?)?)
???_thread.start_new_thread(?print_time,?("Thread-2",?4,?)?)
except:
???print?("Error:?无法启动线程")
我想实现的是
a = [ "Thread-%s" % i for i in range(100)]
10个线程同时打印,打印完即止
同理多进程中应该怎么实现
###多进程建议使用:multiprocessing
模块
# -*- coding:utf-8 -*-
import os
from multiprocessing import Pool
class MultiProcess(object):
def __init__(self, process_count):
self.__process_count = process_count
def multi_process(self, obj_name, fun_name, fun_args):
fun = getattr(obj_name, fun_name)
print('Parent process %s.' % os.getpid())
pool = Pool(self.__process_count)
print(obj_name, fun_name, fun_args)
for fun_arg in fun_args:
print(fun_arg)
pool.apply_async(fun, args=fun_arg)
print('Waiting for all subprocesses done...')
pool.close()
pool.join()
print('All subprocesses done.')
class A():
def num_test(self, nums):
print([num for num in range(nums)])
def run(self):
MultiProcess(2).multi_process(A, "num_test", [(self, 9,), (self, 5,)])
if __name__ == "__main__":
A().run()
# MultiProcess(2).multi_process(A, "num_test", [(None, 9,), (None, 5,)])