Python并发编程—进程池

进程池实现

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()

  • 功能: 回收进程池中进程
 1 from multiprocessing import Pool
 2 from time import sleep,ctime
 3 
 4 # 进程池事件
 5 def worker(msg):
 6   sleep(2)
 7   print(msg)
 8   return ctime()
 9 
10 # 创建进程池
11 pool = Pool(4)
12 
13 # 向进程池添加执行事件
14 for i in range(10):
15   msg = "Hello %d"%i
16 
17   # r 代表func事件的一个对象
18   r = pool.apply_async(func=worker,args=(msg,))
19 
20 # 关闭进程池
21 pool.close()
22 
23 # 回收进程池
24 pool.join()
25 
26 print(r.get()) # 可以获取事件函数的返回值
进程池使用演示

猜你喜欢

转载自www.cnblogs.com/maplethefox/p/10989156.html