我必须并行运行一些代码,虽然它使用了我本地计算机中 100% 的 CPU,但它的工作方式与 Google Compute Engine 中不同。
我使用的是具有 24vCPU 和 22Gb 内存的计算引擎。下图显示了程序运行时CPU的利用率。
from joblib import Parallel, delayed
import multiprocessing
def some_function():
num_cores = multiprocessing.cpu_count() # = 24
salida = Parallel(n_jobs=num_cores)(delayed(hijo.calcula_error)(metodo='pond') for hijo in self.descendencia)
其中 hijo.calcula_error 是一个可以并行运行的函数。
这种行为正常还是我做错了什么?
最佳答案
我认为这也很大程度上取决于您的代码,我会查看 multiprocessing methods并通过在单核实例上运行它来开始测试,看看它是否使用了所有容量(或者可能在 24 核实例上生成 24 个进程)。我希望这能有所帮助。
我在这里要考虑的另一件事是查看可能限制实例整体性能的内存瓶颈或磁盘 I/O 限制。
关于python - 为什么 Google Compute Engine 中的多处理不使用 100% CPU?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55748030/