进程池:
一个池子,里边有固定数量的进程。这些进程一直处于待命状态,一旦有任务来,马上就有进程去处理。
因为在实际业务中,任务量是有多有少的,如果任务量特别的多,不可能要开对应那么多的进程数
进程池还会帮程序员去管理池中的进程
from multiprocessing import Pool import os p = Pool(os.cpu_count() + 1) # 查看计算机核心数, 最佳进程数为核心数+1
进程池有三个方法: map(func,iterable) func:进程池中的进程执行的任务函数 iterable: 可迭代对象,是把可迭代对象中的每个元素依次传给任务函数当参数 apply(func,args=()): 同步的效率,也就是说池中的进程一个一个的去执行任务 func:进程池中的进程执行的任务函数 args: 可迭代对象型的参数,是传给任务函数的参数 同步处理任务时,不需要close和join 同步处理任务时,进程池中的所有进程是普通进程(主进程需要等待其执行结束) apply_async(func,args=(),callback=None): 异步的效率,也就是说池中的进程一次性都去执行任务 func:进程池中的进程执行的任务函数 args: 可迭代对象型的参数,是传给任务函数的参数 callback: 回调函数,就是说每当进程池中有进程处理完任务了,返回的结果可以交给回调函数,由回调函数进行进一步的处理,回调函数只有异步才有,同步是没有的 异步处理任务时,进程池中的所有进程是守护进程(主进程代码执行完毕守护进程就结束) 异步处理任务时,必须要加上close和join 回调函数的使用: 进程的任务函数的返回值,被当成回调函数的形参接收到,以此进行进一步的处理操作 回调函数是由主进程调用的,而不是子进程,子进程只负责把结果传递给回调函数
原文:https://www.cnblogs.com/niuli1987/p/9520683.html