Я использую модуль Parallel Python (pp
) и хочу отправить задание работнику. Однако функция, которую я хочу выполнить, находится в другом модуле (написанном с помощью Cython), и я не знаю, как импортировать имя функции в новый рабочий процесс. Метод, предложенный здесь, т.е. импорт модуля "walkerc" внутри функции не может работать, так как сама прогулка определена в walkerc из имени файла "walkerc.so"
import pp
from walkerc import walk
# Other stuff here
ser = pp.Server()
# Some more definitions
ser.submit(walk, (it, params))
ser.submit(walk, (1000, params), modules = ("walkerc",), globals = globals())
Оба приведенных выше утверждения терпят неудачу, я получаю следующую ошибку:
Traceback (последний последний вызов):
Файл "", строка 1, в ser.submit(walk, (1000, params), modules = ("walkerc",), globals = globals())
Файл "/usr/lib/python2.7/site-packages/pp.py", строка 458, в поле submit sfunc = self.__dumpsfunc((func, ) + depfuncs, modules)
Файл "/usr/lib/python2.7/site-packages/pp.py", строка 629, в __dumpsfunc sources = [self.__get_source(func) for func in funcs]
Файл "/usr/lib/python2.7/site-packages/pp.py", строка 696, в __get_source sourcelines = inspect.getsourcelines(func)[0]
Файл "/usr/lib/python2.7/inspect.py", строка 690, в строках getsourcelines, lnum = findsource(object)
Файл "/usr/lib/python2.7/inspect.py", строка 526, в файле findsource = getfile(object)
Файл «/usr/lib/python2.7/inspect.py», строка 420, в getfile «функция, трассировка, фрейм или объект кода». формат (объект))
TypeError: '‹' встроенная функция walk'>' не является модулем, классом, методом, функцией, трассировкой, фреймом или объектом кода.
Сама функция «прогулка» правильно импортируется в основную программу, проблематичным является процесс отправки ее новому работнику.
Как я могу правильно указать имя функции «прогулка»? Я не хочу определять «прогулку» в том же файле, в котором я его назвал, потому что я изменил его в Cython и хочу иметь лучшую производительность. Есть ли альтернатива?