Использование windows и python 3.6 У меня возникают проблемы с многопроцессорностью, когда я импортирую функцию, которая должна быть отображена.
Этот код работает (дает вывод [2, 12, 30, 56, 90]):
from multiprocessing import Pool
def f(x,y):
return x*y
if __name__ == '__main__':
args=[(1,2),(3,4),(5,6),(7,8),(9,10)]
with Pool(4) as p:
result=p.starmap(f,args)
print(result)
Теперь я переместил функцию f в другой файл .py с именем test и вместо этого импортировал ее:
from multiprocessing import Pool
from test import f
if __name__ == '__main__':
args=[(1,2),(3,4),(5,6),(7,8),(9,10)]
with Pool(4) as p:
result=p.starmap(f,args)
print(result)
только с test.py, содержащим:
def f(x,y):
return x*y
Выполнение этого приводит к бесконечному циклу (ничего не возвращает с высоким использованием процессора).
Что вызывает это и есть ли способ это исправить? Я успешно получил многопроцессорность для работы с программой, скопировав весь код в один огромный .py, который, очевидно, не идеален.