我必须并行运行一些代码,尽管它占用了本地计算机中100%的CPU,但它无法像Google Compute Engine中的那样工作。
我正在使用具有24vCPU和22Gb内存的Compute Engine。下图显示了程序运行时的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是可以并行运行的函数。
这是正常现象还是我做错了什么?
答案 0 :(得分:0)
我认为这也很大程度上取决于您的代码,我将审查multiprocessing methods并通过在单个核心实例上运行它来开始测试,以查看它是否使用了全部容量(或者可能在其上生成了24个进程24个核心实例)。希望对您有所帮助。
我在这里要考虑的另一件事是看一下内存瓶颈或磁盘I / O节流,它们可能会限制实例的整体性能。