为什么多处理在Google Compute Engine中不使用100%CPU?

时间:2019-04-18 14:20:24

标签: python google-compute-engine python-multithreading joblib

我必须并行运行一些代码,尽管它占用了本地计算机中100%的CPU,但它无法像Google Compute Engine中的那样工作。

我正在使用具有24vCPU和22Gb内存的Compute Engine。下图显示了程序运行时的CPU利用率。

CPU utilization below 0,15% 我正在使用的模拟代码是:

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是可以并行运行的函数。

这是正常现象还是我做错了什么?

1 个答案:

答案 0 :(得分:0)

我认为这也很大程度上取决于您的代码,我将审查multiprocessing methods并通过在单个核心实例上运行它来开始测试,以查看它是否使用了全部容量(或者可能在其上生成了24个进程24个核心实例)。希望对您有所帮助。

我在这里要考虑的另一件事是看一下内存瓶颈或磁盘I / O节流,它们可能会限制实例的整体性能。