进程池

来源:互联网 发布:网络ip数字解码矩阵 编辑:程序博客网 时间:2024/06/05 20:16

开启进程必须定义在__main__中

import multiprocessingdef tets(l=[],start=0,end=5,step=1):    print(l)    for value in range(start,end,step):        l.append(value)    print(l)def done(a):    print('done')if __name__ == '__main__':    with multiprocessing.Manager() as manager:        ll = manager.list()        pool = multiprocessing.Pool(5)        pool.apply(func=tets,args=(ll,1,5,1))        pool.apply_async(func=tets,args=(ll,55,99,11),callback=done,error_callback=None)        pool.close()        pool.join()

注意点:

Pool:指定进程池进程个数,更多任务等待前面执行完毕再创进程执行

func:不是target了

apply:阻塞执行,进程执行完毕开启下一条进程

apply_async:同步开启

callback:执行完毕执行方法,在主进程中执行,非子进程中执行

error_callback:发生异常执行方法

先close再join:保证没有新任务进入,然后等待执行关闭

join:不join不会等待进程执行完毕

原创粉丝点击