这可能是一个微不足道的问题,但是如何在 python 中并行化以下循环?
# setup output lists
output1 = list()
output2 = list()
output3 = list()
for j in range(0, 10):
# calc individual parameter value
parameter = j * offset
# call the calculation
out1, out2, out3 = calc_stuff(parameter = parameter)
# put results into correct output list
output1.append(out1)
output2.append(out2)
output3.append(out3)
我知道如何在 Python 中启动单线程,但我不知道如何“收集”结果。
多个进程也可以 - 在这种情况下最简单的。我目前使用的是 Linux,但代码也应该在 Windows 和 Mac 上运行。
并行化此代码的最简单方法是什么?
原文由 memyself 发布,翻译遵循 CC BY-SA 4.0 许可协议
由于全局解释器锁 (GIL),在 CPython 上使用多个线程不会为纯 Python 代码提供更好的性能。我建议改用
multiprocessing
模块:请注意,这在交互式解释器中不起作用。
为了避免 GIL 周围的常见 FUD:无论如何,在这个例子中使用线程不会有任何优势。你 想 在这里使用进程,而不是线程,因为它们避免了一大堆问题。