我正在使用 Parallel Python 模块 ( pp
),并希望将作业提交给工作人员。但是,我要执行的函数在另一个模块中(用 Cython 编写),我不知道如何将函数名称导入新的 worker。这里建议的方法,即在函数中导入模块“walkerc”无法正常工作,因为walk本身是在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())
上面的两个语句都失败了,我收到以下错误:
回溯(最近一次通话最后):
文件“”,第 1 行,在 ser.submit(walk, (1000, params), modules = ("walkerc",), globals = globals())
文件“/usr/lib/python2.7/site-packages/pp.py”,第 458 行,在提交 sfunc = self.__dumpsfunc((func, ) + depfuncs, modules)
文件“/usr/lib/python2.7/site-packages/pp.py”,第 629 行,在 __dumpsfunc 来源 = [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 'function, traceback, frame, or code object'.format(object))
TypeError: '<'built-in function walk'>' 不是模块、类、方法、函数、回溯、框架或代码对象
函数“walk”本身在主程序中被正确导入,将它提交给新工作人员的过程是有问题的。
如何正确指定函数名称“walk”?我不想在我调用它的同一个文件中定义“walk”,因为我已经在 Cython 中对其进行了修改并希望获得更好的性能。有替代方案吗?