gpt4 book ai didi

Python。多处理池。如何获取所有结果

转载 作者:行者123 更新时间:2023-12-01 01:38:57 25 4
gpt4 key购买 nike

开始使用 Python 并陷入一种愚蠢的情况。我的函数返回两个值。我希望使用 MP 来加快执行速度。

import time
import multiprocessing as mp

def foo(bar, baz):
print("start")
time.sleep(2)
print("end")
return bar, baz


if __name__ == '__main__':
pool = mp.Pool(processes=4)

ret = []
i = 0
while i < 4 :
j = i + 1
while j < 4 :
results = [pool.apply_async(foo, args=(i, j))]
j = j + 1
i = i + 1

output = [p.get() for p in results]
print(output)

最后,我想获得一个返回值的列表,例如 [(0,1),(0,2),...]。然而我只看到一对。知道如何快速更改此代码以获得所有结果并且不丢失并行性吗?谢谢!

start
start
start
start
end
start
end
start
end
end
end
end
[(2, 3)]

最佳答案

您将在每次迭代中覆盖您的结果列表,但您应该附加到它。这应该可以解决问题:

results = []
while i < 4 :
j = i + 1
while j < 4 :
results.append(pool.apply_async(foo, args=(i, j)))
j = j + 1
i = i + 1

output = [p.get() for p in results]

关于Python。多处理池。如何获取所有结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52104975/

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