Я пытаюсь решить задачу многопроцессорной обработки в Python.
Я могу выполнить его задачу с помощью модуля multiprocess
, но не могу применить то же самое с модулем multiprocessing
. Я должен подать заявку в многопроцессорном модуле, потому что мне нужно использовать freeze_support()
.
Сначала я подумал, что проблема в моем коде, и опубликовать this , которые еще не получили ответов , Затем я подумал запустить игрушечный пример применения модуля multiprocessing
, чтобы понять, смогу ли я выяснить, почему многопроцессорная обработка не работает в моей системе. Итак, я запустил этот код, полученный из этого урока .
import multiprocessing
import time
def cpu_bound(number):
return sum(i * i for i in range(number))
def find_sums(numbers):
with multiprocessing.Pool() as pool:
pool.map(cpu_bound, numbers)
if __name__ == "__main__":
numbers = [5_000_000 + x for x in range(20)]
start_time = time.time()
find_sums(numbers)
duration = time.time() - start_time
print(f"Duration {duration} seconds")
Кажется, что модуль multiprocessing
не работает на моей машине, потому что этот игрушечный пример не будет работать в моей системе тоже.
Когда я применяю модуль multiprocess
на этом игрушечном примере, результаты сразу же обнаруживаются при использовании всех моих ядер.
Поэтому мне интересно, если проблема связана с определенным * Конфигурация 1032 * в моей системе или эквивалентен freeze_support()
в multiprocess
модуле?
Говоря «этот модуль не будет работать в моей системе», я имею в виду, что процессы были запущены, но процессор не go вверх и кажется, что ничего не происходит ... через почти 10 минут я вручную прекращаю запуск. Но с многопроцессорным модулем код выполняется менее чем за 1 минуту.
Заранее спасибо.
PS: моя машина имеет 4 ядра.