进程池Pool介绍
Pool类可以提供指定数量的进程供用户调用,当有新的请求提交到Pool中时,如果池还没有满,就会创建一个新的进程来执行请求。如果池满,请求就会告知先等待,直到池中有进程结束,才会创建新的进程来执行这些请求。
# 导入进程模块
import multiprocessing
# 最多允许3个进程同时运行
pool = multiprocessing.Pool(processes = 3)
1、apply()
— 该函数用于传递不定参数,主进程会被阻塞直到函数执行结束(不建议使用,并且3.x以后不在出现),函数原型如下:
apply(func, args=(), kwds={})
2、apply_async
— 与apply用法一致,但它是非阻塞的且支持结果返回后进行回调,函数原型如下:
apply_async(func[, args=()[, kwds={}[, callback=None]]])
3、map()
— Pool类中的map方法,与内置的map函数用法基本一致,它会使进程阻塞直到结果返回,函数原型如下:
map(func, iterable, chunksize=None)
注意:虽然第二个参数是一个迭代器,但在实际使用中,必须在整个队列都就绪后,程序才会运行子进程。
4、map_async()
— 与map用法一致,但是它是非阻塞的。其有关事项见apply_async,函数原型如下:
map_async(func, iterable, chunksize, callback)