Я новичок в многопроцессорности Python, и я пытаюсь реализовать некоторые параллельные вычисления. У меня есть информация, что это:Python Multiprocessing - процессы Parrallel
#M is an integer, contains the number of processes I'd like to launch.
results = []
for i in range(0, M):
p = Process(target=processchild, args=(data[i],q))
p.start()
result.append(q.get())
p.join()
еще последовательный, поскольку .join()
вызывает цикл ждать, пока p
не будет закончен до начала следующего. Я прочитал в ответ here, что
Вы либо хотите присоединиться к вашим процессам по отдельности вне вашего для цикла (например, путем сохранения их в виде списка, а затем итерации над ним) ...
Так, если бы я изменить мой код
results = []
for i in range(0, M):
processes[i] = Process(target=processchild, args=(data[i],q))
processes[i].start()
result.append(q.get())
for i in range(0, M):
processes[i].join()
ли он на самом деле работать параллельно сейчас? Если нет, как я могу изменить свой код для работы таким образом? Я прочитал решение, используя numpy.Pool
и apply_async
, отправленный как ответ на вопрос, который я ранее связал, поэтому меня больше всего интересует решение, которое их не использует.
звучит правильно. Вы должны проверить с помощью системных инструментов, что процессы 'M' фактически выполняются одновременно. –