gpt4 book ai didi

python - Python 多处理队列是否有序?

转载 作者:行者123 更新时间:2023-12-04 16:30:07 26 4
gpt4 key购买 nike

如果这很明显,请原谅我,但我无法从 documentation 中分辨出来使用队列时的输出是否有序。也就是说,如果输入是 [1, 2, 3]输出将是 f(1), f(2), f(3) ,或者它们会出现故障?

编辑:我知道输入是在 FIFO 中处理的。但是FIFO检索是否一定保证结果也按顺序返回?

最佳答案

不,他们将按照完成的顺序进入队列,而不是按照开始的顺序。这意味着如果您以特定顺序开始您的流程,它们可能会或可能不会按照该顺序完成。如果顺序对您很重要,您应该将起始顺序与队列中的结果一起传回,也许作为元组 queue.put((order, result)) .这是一个示例,显示了您从队列中获得的随机顺序。 (这仍然是先进先出)

import multiprocessing
import random
import time

def square(x, queue):
# Sleep for a value between 0 and 1.
time.sleep(random.random())
queue.put(x**2)

queue = multiprocessing.Queue()

for i in range(10):
process = multiprocessing.Process(target = square, args = (i, queue))
process.start()

results = []
for i in range(10):
results.append(queue.get())

print (results)

这给了我 [25, 16, 9, 0, 36, 64, 81, 1, 49, 4]。

假设您的任务相当简单,我总是更喜欢使用 Python 的 Pool功能及其相应的 pool.map()确保根据输入顺序保留输出顺序的函数。

关于python - Python 多处理队列是否有序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49858968/

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