进程池用于进程维护, 当使用时,将会去进程池取数据
from multiprocessing import Pool, Process
import os, time
def f(i):
time.sleep(2)
print('in process', os.getpid()) #os.getpid()获得进程序列号
return i+100
def Bar(arg):
print('exec done--', arg, os.getpid())
if __name__ == '__main__':
pool = Pool(5) #最多放入5个进程
for i in range(10):
pool.apply_async(func=f, args=(i,), callback=Bar) # callback回调函数, 子进程结束时,是否还做其他的事, apply_async是并行 和 apply是串行
print('end')
pool.close()
pool.join() #进程池中程序结束时,关闭进程池,忽略程序直接结束, 不能与join()变换位置