Почему Multiprocessing не использует 100% CPU в Google Compute Engine? - PullRequest
1 голос
/ 18 апреля 2019

Мне нужно выполнить какой-то код параллельно, и хотя он использует 100% ЦП на моем локальном компьютере, он не работает так в Google Compute Engine.

Я использую Compute Engine с 24vCPU и памятью 22Gb. На следующем рисунке показано использование процессора во время работы программы.

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 голосов
/ 25 апреля 2019

Я думаю, что это также очень сильно зависит от вашего кода, я бы пересмотрел многопроцессорные методы и начал тестирование, запустив его на одном базовом экземпляре, чтобы посмотреть, использует ли он всю емкость (или, возможно, порождает порождение)24 процесса на 24 основных экземплярах).Я надеюсь, что это может помочь.

Другая вещь, которую я хотел бы рассмотреть здесь, - взглянуть на узкое место в памяти или регулирование дискового ввода-вывода, которое может ограничивать общую производительность экземпляра.

...