【进程 06】进程池

import os
import random
import time
from multiprocessing import Pool


# Pool 进程池

def run(name):
    print('子进程%d启动--%s' % (name, os.getpid()))
    start = time.time()
    # 随机休眠1~3秒
    time.sleep(random.randint(1, 3))
    end = time.time()
    print('子进程%d结束--%s--耗时%0.2f' % (name, os.getpid(), end - start))


if __name__ == '__main__':
    print('父进程启动')
    # 进程池 Pool传入2 模拟双核 同时可以启动2个子进程
    p = Pool(2)
    for i in range(5):
        # 创建进程放入进程池
        p.apply_async(run, args=(i,))
    # 在调用join之前必须先调用close,调用close之后不能添加新的进程
    p.close()
    # 进程池对象调用join,会等待进程池中所有的子进程结束完毕再去执行父进程
    p.join()
    print('父进程结束')

代码示例图:

 

得到的结论有

  1. 模拟双核,所以同时启动 子进程0 和 子进程 1 
  2. 导入的类发生了改变 Processing 改为 Pool(水池,此刻为进程池) 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章