为什么使用内置函数的多重处理示例会导致'AttributeError”?

Mary-Kate Olsen
发布: 2024-10-17 19:48:30
原创
435 人浏览过

Why Does Multiprocessing Example Result in 'AttributeError' with Built-in Functions?

为什么多重处理示例给出 AttributeError

在尝试深入研究多重处理时,有人在改编文档中的介绍性示例时遇到了 AttributeError:

<code class="python">from multiprocessing import Pool
def f(x):
    return x*x

if __name__ == '__main__':
    with Pool(5) as p:
        print(p.map(f, [1, 2, 3]))</code>
登录后复制

错误:“AttributeError:无法在上获取属性'f'>”让用户感到困惑。

要解决此问题,重要的是要了解 multiprocessing.Pool 具有独特的设计功能。正如 Python 问题 #25053 中所述,在处理导入模块中未定义的对象时,Pool 有时会出现问题。作为解决方法,您可以在单独的文件中定义函数并导入模块。

以下示例:

defs.py:

<code class="python">def f(x):
    return x*x</code>
登录后复制

run.py:

<code class="python">from multiprocessing import Pool
import defs

if __name__ == '__main__':
    with Pool(5) as p:
        print(p.map(defs.f, [1, 2, 3]))</code>
登录后复制

此修改应该可以解决 AttributeError。然而,值得注意的是,由于这个潜在的问题,文档中给出的示例可能并不最适合初学者。

以上是为什么使用内置函数的多重处理示例会导致'AttributeError”?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板