进程池Pool

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/9/5 22:59
# @Author : Lhtester
# @Site : 
# @File : pool_实例.py
# @Software: PyCharm
import random
import os
import time
from multiprocessing import Pool

#功能函数
def worker(msg):
    #开始时间
    t_start = time.time()
    print("%s开始执行,进程号为%d"%(msg,os.getppid()))
    time.sleep(random.random()*2)#随机休眠
    #结束时间
    t_stop =time.time()
    print(msg,"执行完毕,耗时%0.f"%(t_start-t_stop))
if __name__=='__main__':
    #定义一个进程池,最大进程数为3
    po = Pool(3)
    #循环添加任务
    for i in range(0,10):
        po.apply_async(worker,(i,))

    print("---start---")
    #关闭进程池,关闭后po不再接受新的请求
    po.close()
    #等待po中所有子进程执行完毕,必须放在close语句之后
    po.join()
    print("---end---")

详解:

1.apply_async(func[,args[,kwds]])使用非阻塞方式调用func(并行执行,堵塞方式必须等待上一个进程退出才能执行下一个进程),args为传递给func的参数列表,kwds为传递给func的关键字参数列表。
2.apply(func[,args[,kwds]])使用阻塞方式调用func。是阻塞式添加任务的。
3.close()关闭Pool,使其不再接受新的任务
4.terminate()不管任务是否完成,立即终止
5.join()主进程阻塞,等待子进程的退出,必须在close或terminate之后使用
原文地址:https://www.cnblogs.com/anhao-world/p/15231822.html