多进程-Pool进程池

from multiprocessing import Pool
import  os,time

def Foo(i):
    time.sleep(2)
    print("in process",os.getpid())
    return i +100

def Bar(arg):
    print('-->exec done',arg,os.getpid())

if __name__ == "__main__":
    pool =Pool(2)#允许进程池同时放入5个
    print("主进程",os.getpid())
    for i in range(10):
        pool.apply_async(func=Foo,args=(i,),callback=Bar)#callback回调执行完func才会执行callback,callback是主进程执行的,作用是连接一次,而子进程需要每次都需要重新连接
        #pool.apply()串行 pool.apply_async()并行
    print("end")
    pool.close()
    pool.join()#进程池中进程执行完毕后在关闭,如果注释,那么程序直接关闭

 

posted @ 2018-06-25 20:52  努力乄小白  阅读(198)  评论(0编辑  收藏  举报