<p>x,y值将始终保持一致,因为当您将<code>f()</code>的结果合并到<code>x_list</code>和<code>y_list</code>中时,您回到了主进程中</p>
<p>为了更清楚地说明这一点,请使<code>f()</code>调用花费不同的时间,如下所示:</p>
<pre><code>from multiprocessing import Pool
import random
import time
def f(x):
print( f"{x=}" )
delay = 2.0*random.random()
print( f"{delay=}" )
time.sleep(delay)
return x,x*x
x_list = []
y_list = []
if __name__ == "__main__":
with Pool() as pool:
for x,y in pool.imap_unordered(f, range(10)):
x_list.append(x)
y_list.append(y)
print( f"{x_list=}" )
print( f"{y_list=}" )
</code></pre>
<p>您可能会得到这样的输出,注意到<code>f()</code>的并发执行是如何导致其print语句与其他也执行其<code>f()</code>的进程交错的:</p>
<pre><code>x=0
delay=1.2836811458870878
x=1
delay=0.944416583067992
x=2
x=3
x=4
delay=1.6181526174149976
delay=0.5554265852002582
delay=1.5824716636923408
x=5
delay=0.01722248285756467
x=6
delay=1.8688128104508799
x=7
delay=0.9426899102018951
x=8
delay=0.5319453505012279
x=9
delay=0.24791521653497783
x_list=[5, 3, 8, 9, 1, 7, 0, 4, 2, 6]
y_list=[25, 9, 64, 81, 1, 49, 0, 16, 4, 36]
</code></pre>
<p>检查打印输出x=5的睡眠时间最短,因此在结果列表中排名第一。类似的x=6具有最长的睡眠时间,因此是输出中的最后一个睡眠时间</p>