解决Python 进程池Pool中一些坑
作者:qq_41131535 时间:2023-12-21 00:24:31
1 from multiprocessing import Pool,Queue。
其中Queue在Pool中不起作用,具体原因未明。
解决方案:
如果要用Pool创建进程,就需要使用multiprocessing.Manager()中的Queue,
与multiprocessing中的Queue不同
q=Manager().Queue()#Manager中的Queue才能配合Pool
po = Pool() # 无穷多进程
2 使用进程池,在进程中调用io读写操作。
例如:
p=Pool()
q=Manager().Queue()
with open('/home/cctv/data/stage_file/stage_{}.txt'.format(int(time.time())), 'w') as w1:
p.apply_async(write_json, args=(video_path, 0,0.6,w1,q,i[0],))
这样也不会完成进程,只能把w放到具体的函数里面,不能通过参数调用
补充:python3进程池pool使用及注意事项
1.在python中使用进程池主要就是为了并行处理任务,缩短运行时间
2.经常使用方法: 同步有 apply(), map();异步的有 apply_async(), map_async()
3. 先看几个小例子
import time
from multiprocessing import Pool
test = [1,2,3,4,5,6,7,8]
def run(fn):
time.sleep(1)
return fn*fn
s = time.time()
for i in test:
run(i)
e = time.time()
print('直接循环 执行时间:',e - s)
pool = Pool(8)
s = time.time()
for i in test:
pool.apply(run, (i,))
e = time.time()
print('apply 执行时间:',e - s)
pool1 = Pool(8)
s = time.time()
res = []
for i in test:
r = [pool1.apply_async(run, (i,))]
res.append(r)
pool1.close()
pool1.join()
e = time.time()
print([i.get() for i in r])
print('apply_async 执行时间:',e - s)
pool2 = Pool(8)
r = pool2.map(run,test)
pool2.close()
pool2.join()
e1 = time.time()
print(r)
print('map执行时间:',e1 - e)
pool3 = Pool(8)
pool3.map_async(run,test)
pool3.close()
pool3.join()
e1 = time.time()
print('map_async执行时间:',e1 - e)
执行结果
直接循环 执行时间: 8.004754781723022
apply 执行时间: 8.016774654388428
[64]
apply_async 执行时间: 1.1128439903259277
[1, 4, 9, 16, 25, 36, 49, 64]
map执行时间: 1.181443452835083
map_async执行时间: 2.3679864406585693
除此之外,在写代码中,还涉及到变量的一些问题。就需要加锁~
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。
来源:https://blog.csdn.net/qq_41131535/article/details/89706178
标签:Python,进程池,Pool
0
投稿
猜你喜欢
T-SQL 查询语句的执行顺序解析
2024-01-14 08:00:00
使用Vue.js和MJML创建响应式电子邮件
2023-07-02 17:08:59
python 包实现 time 时间管理操作
2023-03-13 21:37:52
python处理DICOM并计算三维模型体积
2022-07-16 09:24:29
python实现中文转换url编码的方法
2021-05-26 08:46:57
原生Js与jquery的多组处理, 仅展开一个区块的折叠效果
2024-04-17 10:06:48
Python tkinter中label控件动态改变值问题
2023-09-15 19:27:18
Oracle 数组的学习 小知识也要积累,养成好的学习态度
2024-01-27 21:15:25
使用虚拟机在VirtualBox+openEuler上安装部署openGauss数据库
2024-01-21 22:45:53
python正则表达式匹配IP代码实例
2022-01-03 00:25:52
SQL SERVER的字段类型介绍
2008-05-23 13:27:00
空行不空格式排版组织原理
2010-05-03 14:46:00
Python3实现计算两个数组的交集算法示例
2021-06-03 00:21:19
关于Python排序问题(冒泡/选择/插入)
2023-11-17 19:43:37
基于python实现文件加密功能
2022-02-02 20:28:57
snoopy PHP版的网络客户端提供本地下载
2023-06-28 00:09:55
如何把ACCESS转成SQL数据库
2007-08-11 13:51:00
mysql乱码问题分析与解决方法
2024-01-14 21:05:51
eWebEditor不支持IE,IE8,IE7,火狐,遨游的解决方法
2011-06-06 07:57:00
sqlserver、mysql获取连接字符串步骤
2024-01-22 00:49:33