python 非阻塞模式 线程池
2021-01-03 10:29
标签:python 返回 tar 内容 time() proc pytho rand process python 非阻塞模式 线程池 标签:python 返回 tar 内容 time() proc pytho rand process 原文地址:https://www.cnblogs.com/cfpl/p/12991849.html 1 """
2 非阻塞模式:当进程池有空闲,就将任务放入,它会继续执行主进程
3 """
4 import os
5 import time
6 from multiprocessing import Pool
7 from random import random
8
9 container = []
10
11
12 def task(name):
13 print("进行任务{} 进程ID:{}".format(name, os.getpid()))
14 start = time.time()
15 # random() 的值是0到1之间,这里就表示休眠 0到2秒
16 time.sleep(random() * 2)
17 end = time.time()
18 return "完成任务:{} 用时:{} 进程ID:{}".format(name, (end - start), os.getpid())
19
20
21 def callback_func(n):
22 """将进程返回的内容n,放进这个函数内运行"""
23 container.append(n) # 添加返回内容到container,这里也可以对返回的函数进行其它的处理
24
25
26 if __name__ == ‘__main__‘:
27 pool = Pool(5) # 创建一个进程池,里面放5个进程
28 tasks = ["任务1", "任务2", "任务3", "任务4", "任务5", "任务6", "任务7"]
29 for t in tasks:
30 # apply_async 非阻塞模式,只要存在没有使用的进程,就将任务放进去
31 pool.apply_async(task, args=(t,), callback=callback_func)
32
33 pool.close()
34 pool.join() # 将进程池插入到这里,只要当它里面的任务全部都执行完,才继续
35
36 for c in container:
37 print(c)
38
39 print("over")
上一篇:python-列表