gpt4 book ai didi

Python 2.7 多处理在不使用池的情况下获取处理结果

转载 作者:太空宇宙 更新时间:2023-11-04 01:06:20 25 4
gpt4 key购买 nike

如何在不使用池的情况下从我的过程中获取结果?

(我愿意关注进展:

(print "\r",float(done)/total,"%",)

据我所知,使用池无法完成)

def multiprocess(function, argslist, ncpu):
total = len(argslist)
done = 0
jobs = []
while argslist != []:
if len(mp.active_children()) < ncpu:
p = mp.Process(target=function,args=(argslist.pop(),))
jobs.append(p)
p.start()
done+=1
print "\r",float(done)/total,"%",
#get results here
for job in jobs:
job.get_my_result()???

过程非常短(<0.5 秒),但我有大约 100 万个。

我看到了这个帖子 Can I get a return value from multiprocessing.Process?我试图重现它,但无法使其正常工作。

您可以随时获取任何进一步的信息。

最佳答案

这个问题可能被认为是重复的,但无论如何这是我的问题的解决方案:

def multiprocess(function, argslist, ncpu):
total = len(argslist)
done = 0
result_queue = mp.Queue()
jobs = []
while argslist != [] and done<10 :
if len(mp.active_children()) < ncpu:
p = mp.Process(target=function,args=(result_queue, argslist.pop(),))
jobs.append(p)
p.start()
done+=1
print "\r",float(done)/total,"%",
#get results here
res = [result_queue.get() for p in jobs]
print res

我也必须改变

return function_result

进入

result_queue.put(function_result)

关于Python 2.7 多处理在不使用池的情况下获取处理结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30189270/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com