【问题标题】: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

谢谢。

【问题讨论】:

    标签: python-3.x multiprocessing


    【解决方案1】:

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

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

    相反。

    来自文档:

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

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

    【讨论】:

    • 非常感谢。
    猜你喜欢
    • 2012-04-03
    • 1970-01-01
    • 1970-01-01
    • 2013-04-03
    • 2017-12-20
    • 2023-03-03
    相关资源
    最近更新 更多