TypeError:'int'对象在运行多处理时不可调用

Posted

技术标签:

【中文标题】TypeError:\'int\'对象在运行多处理时不可调用【英文标题】:TypeError: 'int' object is not callable while running multi processingTypeError:'int'对象在运行多处理时不可调用 【发布时间】:2019-09-09 05:04:28 【问题描述】:

我正在尝试在 python 中学习多处理。我写了 2 个简单的函数,并希望同时运行这两个函数。我收到 TypeError: 'int' object is not callable.

这是我的代码:

from multiprocessing import Process
def add(a):
    t=0
    for i in range(a):
        t=i+1
    return t
def subtract (b):
    q=0
    for j in range(b):
        q=j+1
    return (q)

a=100000000
b=100000000

p1 = Process(target=add(a))
p1.start()
print("r")
p2 = Process(target=subtract(b))
p2.start()
print("q")

p1.join()
p2.join()

这是我得到的错误日志:

Process Process-24: TypeError: 'int' object is not callable Traceback (最近一次通话最后):文件 "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/multiprocessing/process.py", 第 297 行,在 _bootstrap self.run() 文件“/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/multiprocessing/process.py”, 第 99 行,运行中 self._target(*self._args, **self._kwargs) r Process Process-25:Traceback(最近一次调用):文件 "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/multiprocessing/process.py", 第 297 行,在 _bootstrap self.run() 文件“/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/multiprocessing/process.py”, 第 99 行,运行中 self._target(*self._args, **self._kwargs) TypeError: 'int' object is not callable

谢谢。

【问题讨论】:

【参考方案1】:

Processtarget 参数必须是函数而不是函数调用。试试:

Process(target=add, args=(a,)) 

相反。

来自文档:

target 是由run() 方法调用的可调用对象。它默认为None,这意味着什么都没有被调用。 ... args 是目标调用的参数元组。

在您的调用 (p1 = Process(target=add(a))) 中,您将add() 函数的结果 作为target 回调传递,而不是add() 函数本身。

【讨论】:

非常感谢。

以上是关于TypeError:'int'对象在运行多处理时不可调用的主要内容,如果未能解决你的问题,请参考以下文章

多处理,Python3,Windows:TypeError:无法腌制 _thread.lock 对象

TypeError:“DataFrame”对象在使用除法时不支持项目分配

Python多处理-TypeError:无法腌制'_tkinter.tkapp'对象

TypeError:AutoProxy 对象不可迭代 - 多处理

反应本机获取多标记[未处理的承诺拒绝:TypeError:TypeError:未定义不是对象(评估'this.state.markers.map

Python多处理:TypeError:预期的字符串或Unicode对象,找到NoneType