简单的总结下今天所学知识.
我们之前学习线程,其实是没有线程池的,只有信号量来作为控制线程数量的标志.
但是我们的进程却有进程池。
先导入:from multiprocessing import Process,Pool
我们进程池有两个方法调用
apply 主要是串行执行
apply_async 异步执行
简单写下我们的代码
from multiprocessing import Process,Pool
import time
def Foo(i):
time.sleep(2)
return i+100
def Bar(arg):
print('-->exec done:',arg)
pool = Pool(5)
for i in range(10):
pool.apply_async(func=Foo, args=(i,),callback=Bar)#异步进行处理进程,回调函数是由父进程
#pool.apply(func=Foo, args=(i,))
print('end')
pool.close()
pool.join()#进程池中进程执行完毕后再关闭,如果注释,那么程序直接关闭。
他们是五个五个的弹出来的,因为我们设置了进程池的数量为5,当然不是说他们能同时运行,