【发布时间】:2010-10-25 10:12:50
【问题描述】:
我试图从 jesse noller 的 Multiprocessing 讲座中复制这个示例(如另一篇 SO 帖子中所推荐的那样)[http://pycon.blip.tv/file/1947354?filename=Pycon-IntroductionToMultiprocessingInPython630.mp4]
但由于某种原因,我收到了一个错误,好像它忽略了我的函数定义: 我在 Windows XP (win32) 我知道 2.6 中的多处理库有限制,要求一切都可以腌制
from multiprocessing import Process
import time
def sleeper(wait):
print 'Sleeping for %d seconds' % (wait,)
time.sleep(wait)
print 'Sleeping complete'
def doIT():
p = Process(target=sleeper, args=(9,))
p.start()
time.sleep(5)
p.join()
if __name__ == '__main__':
doIT()
输出:
Evaluating mypikklez.py
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 1126, in find_class
klass = getattr(mod, name)
AttributeError: 'module' object has no attribute 'sleeper'
导致问题的错误是:AttributeError: 'module' object has no attribute 'sleeper'
这么简单的功能,我不明白会有什么问题。
这只是为了基本概念的自学目的。我不想预先优化任何现实世界的问题。
谢谢。
【问题讨论】:
-
当你解决你的主要问题时,你不能做“p = Process(target=sleeper, args=(9,)).start()”,因为 start() 方法返回无。您需要执行“p = Process(target=sleeper, args=(9,))”,然后执行“p.start()”。否则你对“p.join()”的调用将失败,因为 p 是 None。
标签: python winapi multiprocessing python-2.6