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】:Process
的 target
参数必须是函数而不是函数调用。试试:
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