进程 5.进程池

进程池

进程池
    是一个进程的容器,可以自动创建指定数量的进程,并管理进程
    当需要创建的子进程数量很大,可以使用multiprocessing模块中的Pool类
    初始化Pool时,可以指定最大进程数,当有新的请求提交到Pool中,如果Pool未满,就会自动创建一个新的进程来执行该请求
    如果Pool中的进程数已达最大值,那么该请求就会等待,直到Pool中有进程被释放,然后使用该进程来执行请求

进程池的两种工作方式:
    同步:apply()
        进程池中的进程执行有先后顺序,一个执行完毕后下一个才能执行
    异步:apply_async()
        进程执行没有顺序,多个进程同时执行
            1.异步执行必须close,表示不再接收新的任务
            2.主进程不再等待进程池执行结束后才退出,所以必须join

import multiprocessing
import time

# 执行的函数
def work():
    print('work',multiprocessing.current_process())
    time.sleep(0.5)

if __name__ == '__main__':
    # 创建进程池
    pool = multiprocessing.Pool(3)

    for i in range(10):
        # 同步方式执行
        # pool.apply(work)

        # 异步方式执行
        pool.apply_async(work)
    # 必须close和join
    pool.close()
    pool.join()
上一篇:Bad check value found during backing up datafileBad check value found during backing up datafile


下一篇:GNU 通用公共授权 (简体中文翻译版)