进程池

204 阅读1分钟

进程池

1.进程池实现

1.必要性

  1. 进程的创建和销毁过程消耗的资源较多
  2. 当任务量众多,每个任务在很短时间内完成时,需要频繁的创建和销毁进程。此时对计算机压力较大
  3. 进程池技术很好的解决了以上问题

2.原理

创建一定数量的进程来处理事件,事件处理完进程不退出 而是继续处理其他事件,直到所有事件全都处理完毕统一 销毁。增加进程的重复利用,降低资源消耗

3.进程池实现

1.创建进程池对象,放入适当的进程

from multiprocessing import Pool

Pool(processes)

功能:创建进程池对象

参数:指定进程数量,默认根据系统自动判定

2.将事件加入进程池队列执行

pool.apply_async(func,args,kwds)

功能:使用进程池执行func事件

参数:func事件函数

args元组 给func按位置传参

kwds字典 给func按照键值传参

返回值:返回函数事件对象

3.关闭进程池

pool.close()

功能:关闭进程池,不能再往进程池添加事件

4.回收进程池

pool.join()

功能:回收进程池中进程

from multiprocessing import Pool
from time import sleep, ctime


def worker(msg):
    sleep(2)
    print(ctime(), "--", msg, )


# 创建进程池 事件要写在创建进程之前
if __name__ == '__main__':
    pool = Pool()

    for i in range(10):
        msg = "tedu %d" % i
        pool.apply_async(func=worker, args=(msg,))

    pool.close()

    pool.join()