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

时间:2019-04-18 20:15:12

标签: python-3.x multiprocessing

我正在尝试学习python中的多处理。我写了2个简单的函数,想同时运行。我收到TypeError:“ int”对象不可调用。

这是我的代码:

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-24:TypeError:“ int”对象不可调用   (最近通话最近):文件   “ /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/multiprocessing/process.py”,   _bootstrap中的第297行       self.run()文件“ /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/multiprocessing/process.py”,   运行中的第99行       self._target(* self._args,** self._kwargs)r处理过程25:追溯(最近一次调用为最新):文件   “ /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/multiprocessing/process.py”,   _bootstrap中的第297行       self.run()文件“ /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/multiprocessing/process.py”,   运行中的第99行       self._target(* self._args,** self._kwargs)TypeError:'int'对象不可调用

谢谢。

1 个答案:

答案 0 :(得分:1)

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

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

相反。

从文档中:

  

target run()方法要调用的可调用对象。它的默认值为None,表示什么也没叫。 ... args 是目标调用的参数元组。

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