Почему многопроцессорный пул python застревает в простой функции в Jupyter? - PullRequest
0 голосов
/ 07 февраля 2020

Я пытался запустить некоторый код параллельно, но я столкнулся со странной проблемой. При использовании os.getpid (как в примере документации пула) пул работает нормально. Когда я использую буквально любую пользовательскую функцию, она не ведет себя. Я запускаю код в ноутбуке Jupyter, используя python 3.6 на windows 10.

Я думаю, что проблема в Jupyter, но есть ли у кого-нибудь еще советы? (кроме простого сохранения в скрипт - что я буду делать, когда буду счастлив, что в коде нет ошибок).

Вот пример:


import os
from multiprocessing import Pool

# this code will execute with no issue
with Pool(processes = 2) as pool:
    running = [pool.apply_async(os.getpid, ()) for i in range(4)]
    for r in running:
        print(r.get(timeout=10))


# this code will timeout
def return_one():
    return 1

with Pool(processes = 2) as pool:
    running = [pool.apply_async(return_one, ()) for i in range(4)]
    for r in running:
        print(r.get(timeout=10))
...