многопроцессорность не работает на моей машине - PullRequest
0 голосов
/ 03 мая 2020

Я пытаюсь решить задачу многопроцессорной обработки в 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 ядра.

1 Ответ

0 голосов
/ 11 мая 2020

ОК, после почти недели борьбы, я обнаружил, что проблема не в моей системе и не в блоке "if __name__". Проблема была с моей IDE Spyder.

Я запустил код из командной строки windows, и оба игрушечного примера и мой собственный настоящий код работали отлично. Я действительно не понимаю, почему, однако мне удалось в конечном итоге запустить мой сценарий.

Я был бы рад, если бы у других возникла подобная проблема, и поделился бы своим опытом ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...