# windows下的多进程操作,用multiprocessing模块来实现
from multiprocessing import Process
import os
#子进程执行代码
def run_proc(name):
print('Run child process %s(%s)' %(name, os.getpid()))
if __name__ == '__main__':
print('Parent process %s.' %os.getpid())
p = Process(target=run_proc, args=('test',))
print('Child process will start.')
p.start()
p.join()
print('Child process end.')
# 对于大量子进程,可用进程池pool来创建
from multiprocessing import Pool
import os, time, random
def long_time_task(name):
print('Run task %s(%s)' %(name, os.getpid()))
start = time.time()
time.sleep(3)
end = time.time()
print('Task %s run %0.2f time' %(name, (end-start)))
if __name__ == '__main__':
print('Parent process %s go!' %os.getpid())
p = Pool(4)
for i in range(5):
p.apply_async(long_time_task, args=(i,)) # apply_async 方法是异步非阻塞模式
print('Wait all subprocesses done...')
p.close() # 调用close()之后就不能添加新的process了
p.join()
print('All subprocesses done.')