p=Pool(20)
with open(temp_path,'r') as f:
for line in f.readlines():
p.apply_async(execute_monitor_sql,args=(type,)) --其中execute_monitor_sql函数会返回一个执行结果。我需要将这些结果汇总到一个参数
p.close()
p.join()
但执行的时候并没有返回任何参数
python执行多进程时,如何获取函数返回的值
答案:2 悬赏:50 手机版
解决时间 2021-03-08 03:32
- 提问者网友:风月客
- 2021-03-07 11:49
最佳答案
- 五星知识达人网友:底特律间谍
- 2019-11-08 18:54
共享变量的方法。
没有办法直接实现你的需求,但是,你可以用共享变量的方法实现,比如:
def worker(procnum, return_dict):
'''worker function'''
print str(procnum) + ' represent!'
return_dict[procnum] = procnumif __name__ == '__main__':
manager = Manager()
return_dict = manager.dict()
jobs = [] for i in range(5):
p = multiprocessing.Process(target=worker, args=(i,return_dict))
jobs.append(p)
p.start() for proc in jobs:
proc.join() print return_dict.values()
没有办法直接实现你的需求,但是,你可以用共享变量的方法实现,比如:
def worker(procnum, return_dict):
'''worker function'''
print str(procnum) + ' represent!'
return_dict[procnum] = procnumif __name__ == '__main__':
manager = Manager()
return_dict = manager.dict()
jobs = [] for i in range(5):
p = multiprocessing.Process(target=worker, args=(i,return_dict))
jobs.append(p)
p.start() for proc in jobs:
proc.join() print return_dict.values()
全部回答
- 1楼网友:duile
- 2021-01-10 14:46
最近遇到os.system()执行系统命令的情况,上网搜集了一下资料,整理如下,以备不时之需,同时也希望能帮到某些人。
一、python中的 os.system(cmd)的返回值与linux命令返回值(具体参见本文附加内容)的关系
大家都习惯用os.systemv()函数执行linux命令,该函数的返回值十进制数(分别对应一个16位的二进制数)。该函数的返回值与 linux命令返回值两者的转换关系为:该函数的返回值(十进制)转化成16二进制数,截取其高八位(如果低位数是0的情况下,有关操作系统的错误码共 131个,所以低位都是零),然后转乘十进制数即为 linux命令返回值0。
例如:
os.system()返回值为0 linux命令返回值也为0.
os.system()返回值为256,十六位二进制数示为:00000001,00000000,高八位转乘十进制为 1 对应 linux命令返回值 1
os.system()返回值为512,十六位二进制数示为:00000010,00000000,高八位转乘十进制为 2 对应 linux命令返回值 2
......其它同理
os.system()返回值为32512,十六位二进制数示为:0
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯