Использование многопроцессорного пула из интерактивно загружаемого модуля

У меня есть модуль Python `mymodule'

# mymodule.py
import multiprocessing as mp

def do_work(x):
  # do some stuff
  return 42+x

def work():
  pool = mp.Pool()
  work_list= [1,2,3,4,5]
  returned_values = pool.map(do_work, work_list)
  pool.close()

#end mymodule

Я хочу импортировать это интерактивно в оболочку Python и вызывать work() вот так

 In [1]: import mymodule as mm
 In [2]: mm.work()

Если я сделаю это, do_work, похоже, ничего не сделает. Как я могу заставить это работать в интерактивной оболочке. Если я превращу это в неинтерактивный скрипт, у меня не возникнет проблем. Я на Windows.


person san    schedule 29.05.2018    source источник
comment
Вам нужно будет предоставить минимальный воспроизводимый пример, потому что этот код не работает (do_work должен принять аргумент), и он также ничего не делает (например, не печатает вывод), и если я исправляю эти проблемы, то он отлично работает в консоли.   -  person Alex Hall    schedule 29.05.2018
comment
@AlexHall Изменил код, чтобы сделать do_work минимальным. Это не работает на Ipython QtConsole. Вы тоже на винде?   -  person san    schedule 29.05.2018
comment
Основная проблема заключается в том, что модуль многопроцессорности не может найти вашу функцию, посмотрите связанный вопрос для получения дополнительной информации.   -  person Wolph    schedule 29.05.2018