AttributeError:“池”对象没有属性“__exit__”

2023-11-24

我正在使用一些多处理Python脚本multiprocessing.Pool。这些脚本如下所示:

from multiprocessing import Pool

def f(x):
    return x*x

if __name__ == '__main__':
    with Pool(processes=4) as pool:         # start 4 worker processes
        print(pool.map(f, range(10)))       # prints "[0, 1, 4,..., 81]"

当使用 Python 3.4 运行它时,一切都很好。然而,当使用Python时2.6 or 3.1我收到此错误:

AttributeError: 'Pool' object has no attribute '__exit__'

使用Python2.7 or 3.2,错误本质上是相同的:

AttributeError: __exit__

为什么会发生这种情况以及如何避免这种情况?


The 文档multiprocessing.pool支持上下文管理协议(withPython 版本中的语句)3.3以上。

3.3 版新增功能:池对象现在支持上下文管理协议 - 请参阅上下文管理器类型。__enter__()返回池对象,并且__exit__() calls terminate().

所以你要么需要一个较新版本的 Python,或使用以下两种可能性之一改变你的代码(使用 Python 版本 2.6、2.7、3.1、3.2 进行测试):

  1. 像这样重写你的代码以消除with陈述:

    from multiprocessing import Pool
    
    def f(x):
        return x*x
    
    if __name__ == '__main__':
        pool = Pool(processes=4)            # start 4 worker processes
        print(pool.map(f, range(10)))       # prints "[0, 1, 4,..., 81]"
        pool.terminate()
    
  2. 正如评论中指出的,使用contextlib.closing():

    from multiprocessing import Pool
    import contextlib
    
    def f(x):
        return x*x
    
    if __name__ == '__main__':
        with contextlib.closing(Pool(processes=4)) as pool:
            print(pool.map(f, range(10)))
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AttributeError:“池”对象没有属性“__exit__” 的相关文章

随机推荐

  • 打破嵌套循环和主循环[重复]

    这个问题在这里已经有答案了 我有以下代码 int x 100 Or some other value while x gt 0 for int i 5 i gt 0 i x x 2 if x 0 break 然而 这只会破坏 for 循环
  • Windows 的 Curses 替代方案 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 python 有没有可以在 Windows 中使用curses 模块的替代方案 我查了一下 python 文档 但其中提到它可以在 unix 中使用
  • ExecutorService 的 shutdown() 不会等到所有线程都完成

    我有一个代码 其中 4 个线程同时运行 我想等到这 4 个线程全部完成 只有在那之后才能继续应用程序流程 我尝试了两种方法 Thread join 此方法按预期工作 后面的代码join 仅在所有线程完成后才执行 ExecutorServic
  • Laravel htaccess 问题

    我正在尝试建立一个网站 该网站在实时开发服务器上运行得非常好 我们一直用该服务器向客户端展示该网站 这是来自实时开发的 htaccess 工作正常
  • 覆盖 Android 上的物理菜单按钮

    我希望 Android 设备上的菜单键打开一个对话框 而不是在我的应用程序运行时打开菜单 我尝试将其编码为onCreateOptionsMenu Menu menu 但它只在我第一次按下菜单按钮时起作用 我可以用其他方式来做吗 您可以通过在
  • 如何使用 Ncurses 打印 (☞゚ヮ゚)☞?

    我想在 Ubuntu 中使用 C 使用 Ncurses 库打印 首先 您只需拥有以下内容即可做到这一点 std cout lt lt lt lt std endl 而且效果很好 但是 当使用 Ncurses 打印时 我认为您需要使用prin
  • 停止 Jetpack Compose pointInteropFilter 消耗输入事件

    我有一个垂直的Column有两个孩子 A Pager可组合 来自伴奏者 显示Text A Canvas绘制两个圆弧和一个圆的可组合项 它们的排序顺序与此处描述的顺序相同 我想要Text始终渲染在Canvas 实施细节 The Canvas可
  • 不同CG/GLSL/HLSL功能的性能

    有着色器函数的标准库 例如 forCg 但是是否有资源可以告诉您每个操作需要多长时间 我的想法类似于您过去如何查找每个 ASM 操作需要多少个周期 没有reliable资源将告诉您各种标准着色器函数需要多长时间 即使对于特定的硬件也是如此
  • 捆绑包无效 - Info.plist 中的 CFBundleVersion 和 CFBundleShortVersionString 必须包含更高版本 - 但它们确实包含

    在尝试验证我的应用程序以准备提交到应用程序商店时 我收到以下错误 但这是我的 Info plist 的屏幕截图 错误消息声称列表版本为 1 0 但显示版本为 1 4 我做错了什么 我该如何解决这个问题 Apple 考虑每个版本级别 sepa
  • 加载数据时浏览器忙指示器

    我正在努力实现已经解释过的目标here 我正在尝试使用动态脚本标签将一些数据从服务器加载到客户端 即我创建一个脚本标签 将其 src 设置为我的 JSON 控制器并将其附加到我的 head 或 body 标签 脚本正确加载从服务器返回的数据
  • 如何检查安装的 OpenSSL 版本是否 >= 0.9.8k

    我有一个 PHP 5 x 脚本 需要 OpenSSL 0 9 8k 或更高版本 关于OpenSSL 我发现了以下两个相关常量 OPENSSL VERSION TEXT with value OpenSSL 1 0 0c 2 Dec 2010
  • 以编程方式启用高精度或省电定位模式,无需用户访问“设置”

    为什么我问这个 也是在应用程序中尝试它的原因 它发生了当我们使用谷歌地图棒棒糖 即使位置被禁用 用户从地图应用程序输入后 它也会以高精度模式打开 而无需访问 设置 启用蓝牙可以实现类似的功能 该操作是在我的应用程序中启动的 用户需要做出选择
  • HTML5 本地存储与会话存储

    除了非持久性和仅限于当前窗口之外 会话存储相对于本地存储还有什么好处 性能 数据访问等 吗 本地存储 and 会话存储两者都延伸Storage 除了预期的 非持久性 之外 它们之间没有任何区别sessionStorage 也就是说 数据存储
  • 接收远程服务器返回错误:(403) 禁止消息

    我在下面的代码块上收到 远程服务器返回错误 403 Forbidden 错误消息 具体来说 这一行失败了 var 响应 HttpWebResponse request GetResponse 该代码在我的开发机器上完美运行 但在生产中却无法
  • 将 DBRef 解析为 Json

    我在 MongoDB 的规范化数据模型结构中收到以下错误 org bson codecs configuration CodecConfigurationException Can t find a codec for class com
  • 从任何函数中提取函数参数和默认值

    有没有办法从任何给定函数中提取参数及其各自的默认值outside功能 例如 给定 myfunc lt function a b 1 print c a b 我正在寻找一些会返回的函数 list a NULL b 1 或其一些变体 您正在寻找
  • 指定分页页面 - Laravel 4

    我试图 记住 用户浏览记录时所在的页面 以便当他返回列表时 他会返回到他离开的页面 如何更改分页器的 当前页面 值 我尝试过 Input set page x 但没有这样的功能 GET 页面 x 也不起作用 这是代码 list Public
  • 将独立图例合并到 ggpairs 中(采取 2)

    tl dr无法获得独立的图例 描述整个绘图中的常见颜色 ggpairs令我满意 抱歉长度 我正在尝试使用绘制 下三角 对图GGally ggpairs 用于绘制各种绘图矩阵的扩展包ggplot2 这本质上是同一个问题如何向 ggpairs
  • Django Rest Framework:使用令牌身份验证时重定向到 Amazon S3 失败

    我在 DRF 中使用令牌身份验证 并且对于某个 API 调用 想要重定向到 S3 使用类似的 URLhttps my bucket s3 amazonaws com my file path my file jpg Signature MY
  • AttributeError:“池”对象没有属性“__exit__”

    我正在使用一些多处理Python脚本multiprocessing Pool 这些脚本如下所示 from multiprocessing import Pool def f x return x x if name main with Po