进程池Pool可以提供指定数量的进程给用户使用,当有新的请求进程时,若Pool池没有满,就会创建一个新的进程用于执行该请求,如果Pool池中的进程数量已经达到最大值,则请求会等待,直到池中有进程结束才会创建新的进程。
示例:
# coding: utf-8
import multiprocessing
import time
def task(name):
print(f"{time.strftime('%H:%M:%S')}: {name} 开始执行")
time.sleep(3)
if __name__ == "__main__":
pool = multiprocessing.Pool(processes=3)
for i in range(10):
# 维持执行的进程总数为processes,当一个进程执行完毕后会添加新的进程进去
pool.apply_async(func=task, args=(i,))
pool.close()
pool.join()
print("hello")
输出:
19:43:22: 0 开始执行
19:43:22: 1 开始执行
19:43:22: 2 开始执行
19:43:25: 3 开始执行
19:43:25: 4 开始执行
19:43:25: 5 开始执行
19:43:28: 6 开始执行
19:43:28: 7 开始执行
19:43:28: 8 开始执行
19:43:31: 9 开始执行
hello