进程池pool

from multiprocessing import Pool
import os,time

def f(i):
time.sleep(0.5)
print('in the process',os.getpid())
return i+100
def b(x): #回调函数b的参数为f的return值。回调函数为父进程调用的
print ('done',x)

if __name__=='__main__':
pool=Pool(3) #开了10个进程,同时执行的只有3个,其它7个处于挂起状态
for i in range(10):
pool.apply_async(func=f,args=(i,),callback=b) #callback为回调函数,即执行完f后再执行b,f执行完就执行b,f没有执行完就不执行b。作用是看看f执行成功了没有,执行成功了就会执行b

print ('end')
pool.close()
pool.join() #如果不加这句,那么程序不等子进程执行完毕就结束退出了
posted @ 2018-05-21 23:24  Python从入门到放弃第一集  阅读(741)  评论(0编辑  收藏  举报