永发信息网

python执行多进程时,如何获取函数返回的值

答案:2  悬赏:50  手机版
解决时间 2021-03-08 03:32
  • 提问者网友:风月客
  • 2021-03-07 11:49
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()
但执行的时候并没有返回任何参数
最佳答案
  • 五星知识达人网友:底特律间谍
  • 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()
全部回答
  • 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
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯