我必须并行运行一些代码,虽然它在我的本地计算机中使用了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限制,这可能会限制实例的所有性能。