Python 2.6 Win32 (xp) 上的 Python 多处理

标签 python winapi multiprocessing python-2.6

我尝试从 jesse noller 的多处理讲座中复制这个示例(如另一篇 SO 帖子中所推荐的)[ http://pycon.blip.tv/file/1947354?filename=Pycon-IntroductionToMultiprocessingInPython630.mp4]

但由于某种原因,我收到了一个错误,就好像它忽略了我的函数定义: 我使用的是 Windows XP (win32) 我知道它对 2.6 中的多处理库有限制,要求所有内容都是可pickle

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'对象没有属性'sleeper'

虽然函数很简单,但我不明白会出现什么问题。

这仅用于基本概念的自学目的。我并不是试图预先优化任何现实世界的问题。

谢谢。

最佳答案

从回溯看来,您正在将代码直接运行到 python 解释器 (REPL) 中。

不要那样做。将代码保存在文件中并使用以下命令从文件运行它:

python myfile.py

这将解决您的问题。


作为一个不相关的注释,这一行是错误的:

print 'Sleeping for ' + wait + ' seconds'

应该是:

print 'Sleeping for %d seconds' % (wait,)

因为你不能连接 string 和 int 对象(python 是强类型的)

关于Python 2.6 Win32 (xp) 上的 Python 多处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/850424/

相关文章:

python - 为什么我的代码不迭代每一行?尽管剥离了(使用 .read() 传入的 .txt 输入),但仍存在关键错误 "\n"

python - 为 ASCII 数据添加名称和分配数据类型

winapi - 在 WTL 中实现自定义绘制控件中的滚动

Python:如何一次浏览文件中的多行?

python - 参数化 pytest fixture 对象

python - 一种用指定键列表对 dict 的值求和的 pythonic 方法?

c++ - 如何在控制特定于平台的注册 TableView 的同时删除 XP 上的注册表项

windows - 了解 SystemParametersInfo SPI_SETFOREGROUNDLOCKTIMEOUT

python3多进程共享numpy数组(只读)

c - 对称多处理和分布式系统?