Python многопроцессорный пул с импортированной функцией - PullRequest
0 голосов
/ 03 июля 2018

Использование 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, который, очевидно, не идеален.

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