python多进程中嵌入多进程注意事项
例如代码:
from multiprocessing import Pool
p1 = Pool(4)
s = [1,2,3,4]
for i in s:
p1.apply_asny(某方法,args=(i))
p1.close()
p1.join()
此时,某方法中也有一个多进程设置,这样的话就是双重多进程,只要是传入的参数之间是没有关系的,那么就没有问题。
如果此时,最外层的apply_asny中的方法,是某个类的方法a,而方法a中又调用了方法b,这就会导致子进程和父进程有关联,会报出错误。
同时,对于传入的参数,如果参数存储空间比较小,比如一个int,可以传;而如果实参的存储比较大,比如实参是一个几百万个元素的list,每个进程都要复制一次该参数,就会非常耗时,所以正确做法,应该将存储较大的参数设置为共享变量
from multiprocessing import Manager
# 假设 loc_ad 已经存在且包含数据
loc_ad = {'key1': 'value1', 'key2': 'value2'}
# 使用 Manager 创建共享的字典
manager = Manager()
shared_loc_ad = manager.dict(loc_ad)
# 现在 shared_loc_ad 是一个共享的字典,可以传递给子进程而不用复制,且该共享字典还可以传递到双重进程里。
本文来自博客园,作者:海_纳百川,转载请注明原文链接:https://www.cnblogs.com/chentiao/p/18195300,如有侵权联系删除
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2023-05-16 关于外网机升级docker导致ubuntu无法开机停留在clean/block的问题