当前位置: 首页 > 面试题库 >

给出AttributeError的多处理示例

东典
2023-03-14
问题内容

我正在尝试在代码中实现多处理,因此,我认为我将从一些示例开始学习。我使用了本文档中的第一个示例。

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]))

当我运行上面的代码时,我得到一个AttributeError: can't get attribute 'f' on <module '__main__' (built-in)>。我不知道为什么会收到此错误。如果有帮助,我也使用Python 3.5。


问题答案:

这个问题似乎是multiprocessing.Pool的设计特征。见https://bugs.python.org/issue25053。由于某些原因,Pool并不总是与未在导入模块中定义的对象一起使用。因此,您必须将函数编写到其他文件中并导入模块。

文件: defs.py

def f(x):
    return x*x

档案: run.py

from multiprocessing import Pool
import defs

 if __name__ == '__main__':
    with Pool(5) as p:
        print(p.map(defs.f, [1, 2, 3]))

如果您使用打印或其他内置功能,则该示例应适用。如果这不是错误(根据链接),则错误地选择了给定的示例。



 类似资料:
  • 问题内容: 使用时出现此错误: 没有说明,仅堆栈跟踪到模块内的pool.py文件。 使用这种方式: 我怀疑可挑剔性可能存在问题(python需要将列表数据转换为字节流,或者将列表数据转换为字节流),但是我不确定这是否正确或是否要调试。 编辑:产生此错误的代码的新格式: 产生错误: 问题答案: 在Python 2.x和3.0、3.1和3.2中,对象 不是上下文管理器 。您不能在语句中使用它们。只有在

  • 问题内容: 我在一个类中有一个方法,该方法需要循环执行大量工作,我想将工作分散到我的所有核心上。 我编写了以下代码,如果我使用normal ,则可以使用,但是返回错误。 错误: AttributeError:无法腌制本地对象“ SomeClass.some_method..single” 为什么不能泡菜?我什至尝试移动到全局模块范围(不在类内部-使其独立于上下文): 我收到以下错误: Attrib

  • 问题内容: 我正在尝试学习使用方法,但无法正常工作。这是文档中的代码 它应该输出 你好鲍勃 但是我得到了 没有错误或其他消息,它只是坐在那里,它从32位版本的python 2.7的Windows 7计算机上的已保存.py文件中运行 问题答案: 我的猜测是您正在使用IDLE尝试运行此脚本。不幸的是,此示例无法在IDLE中正确运行。请注意文档开头的注释: 注意:此软件包中的功能要求子 模块可以导入 主

  • 我是Spring批处理的新手,我只想问如何从多行结果集中检索数据。我有以下场景: > 有两个不同的表说员工 使用时,我只能创建一个工资单子级,但该表可能有多个子级。请帮助...

  • 我使用以下模型对来自多种语言的句子进行标记化:https://tfhub.dev/google/universal-sentence-encoder-cmlm/multilingual-preprocess/2 其中,对于以下输入: 输出以下令牌: 从这个输出中,我想恢复标记的文本表示。类似于: 到目前为止,我一直在寻找代币 你知道怎么做吗? 先谢谢你的帮助,

  • 本文向大家介绍C#多线程中的异常处理操作示例,包括了C#多线程中的异常处理操作示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#多线程中的异常处理操作。分享给大家供大家参考,具体如下: 常规Thread中处理异常 使用Thread创建的子线程,需要在委托中捕捉,无法在上下文线程中捕捉 Task中处理异常 1.仍然可以在委托中捕获异常 2.可以捕获Task.Wait() 或者 Task