我正在编写一个程序,它使用文件路径导入模块,函数imp.load_source(module_name,module_path)
. 当我尝试将此模块中的对象传递到Process
.
一个例子:
import multiprocessing
import imp
class MyProcess(multiprocessing.Process):
def __init__(self,thing):
multiprocessing.Process.__init__(self)
self.thing=thing
def run(self):
x=self.thing
if __name__=="__main__":
module=imp.load_source('life', 'C:\\Documents and Settings\\User\\workspace\\GarlicSim\\src\\simulations\\life\\life.py')
thing=module.step
print(thing)
p=MyProcess(thing)
p.start()
注意:要使此代码“工作”,您必须将我提供的参数替换为imp.load_source
其他参数:它必须是您计算机上的某个 Python 文件,最好不在同一个文件夹中。然后, in thing=module.step
,而不是 step 放入该.py
文件中定义的一些随机函数或类。
我得到以下回溯:
<function step at 0x00D5B030>
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "C:\Python26\lib\multiprocessing\forking.py", line 342, in main
self = load(from_parent)
File "C:\Python26\lib\pickle.py", line 1370, in load
return Unpickler(file).load()
File "C:\Python26\lib\pickle.py", line 858, in load
dispatch[key](self)
File "C:\Python26\lib\pickle.py", line 1090, in load_global
klass = self.find_class(module, name)
File "C:\Python26\lib\pickle.py", line 1124, in find_class
__import__(module)
ImportError: No module named life
那我该怎么办?
编辑:
我在 Win XP 上使用 Python 2.6.2c1。