Я пытался запустить некоторый код параллельно, но я столкнулся со странной проблемой. При использовании 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))