当前位置:  开发笔记 > 编程语言 > 正文

另一个与多处理错误的混淆,'module'对象没有属性'f'

如何解决《另一个与多处理错误的混淆,'module'对象没有属性'f'》经验,为你挑选了2个好方法。

我知道这已经得到了回答,但似乎直接执行脚本"python filename.py"不起作用.我在SuSE Linux上有Python 2.6.2.

码:

#!/usr/bin/python
# -*- coding: utf-8 -*-
from multiprocessing import Pool
p = Pool(1)
def f(x):
    return x*x
p.map(f, [1, 2, 3])

命令行:

> python example.py
Process PoolWorker-1:
Traceback (most recent call last):
File "/usr/lib/python2.6/multiprocessing/process.py", line 231, in _bootstrap
    self.run()
File "/usr/lib/python2.6/multiprocessing/process.py", line 88, in run
    self._target(*self._args, **self._kwargs)
File "/usr/lib/python2.6/multiprocessing/pool.py", line 57, in worker
    task = get()
File "/usr/lib/python2.6/multiprocessing/queues.py", line 339, in get
    return recv()
AttributeError: 'module' object has no attribute 'f'

Bartosz.. 125

重构代码,以便f()在创建Pool实例之前定义函数.否则工人看不到你的功能.

#!/usr/bin/python
# -*- coding: utf-8 -*-

from multiprocessing import Pool

def f(x):
    return x*x

p = Pool(1)
p.map(f, [1, 2, 3])

棒极了,非常感谢!! 什么神秘的用法! (10认同)


Tamás.. 5

这个工作:

#!/usr/bin/python
# -*- coding: utf-8 -*-
from multiprocessing import Pool

def f(x):
    return x*x

if __name__ == "__main__":
    p = Pool(1)
    p.map(f, [1, 2, 3])

我不是100%确定你的代码无法正常工作,但我想原因是该multiprocessing模块启动的子进程尝试导入主模块(以便访问您定义的方法),并且该if __name__ == "__main__"节不需要执行设置池的初始化代码.



1> Bartosz..:

重构代码,以便f()在创建Pool实例之前定义函数.否则工人看不到你的功能.

#!/usr/bin/python
# -*- coding: utf-8 -*-

from multiprocessing import Pool

def f(x):
    return x*x

p = Pool(1)
p.map(f, [1, 2, 3])


棒极了,非常感谢!! 什么神秘的用法!

2> Tamás..:

这个工作:

#!/usr/bin/python
# -*- coding: utf-8 -*-
from multiprocessing import Pool

def f(x):
    return x*x

if __name__ == "__main__":
    p = Pool(1)
    p.map(f, [1, 2, 3])

我不是100%确定你的代码无法正常工作,但我想原因是该multiprocessing模块启动的子进程尝试导入主模块(以便访问您定义的方法),并且该if __name__ == "__main__"节不需要执行设置池的初始化代码.

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有