【发布时间】:2022-01-03 08:31:44
【问题描述】:
我有以下代码,它使用 python 的多处理库使用 8 个内核进行一些繁重的计算。
import random
from multiprocessing import Process
random_numbers_list = [random.random()] * 10000000
for i in range(0, len(random_numbers_list), 8):
threads = []
for j in range(i, i + 8):
if j > len(random_numbers_list) - 1:
break
p = Process(target=do_heavy_computation,
args=(random_numbers_list[j], j))
threads.append(p)
[t.start() for t in threads]
[t.join() for t in threads]
但是,问题是,虽然所有 8 核都被正确地用于并行计算,但它会等待当前 8 核批处理完成,直到下一个 8 核批处理开始。我希望代码始终使用 8 个内核,这样当任何一个内核完成时,它会使用总共 8 个内核中的下一个可用内核。任何指导将不胜感激!
【问题讨论】:
-
这听起来像是 multiprocessing.pool.Pool 的工作