我正在尝试学习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'对象不可调用
谢谢。
答案 0 :(得分:1)
Process
的target
参数必须是函数而不是函数调用。试试:
Process(target=add, args=(a,))
相反。
从文档中:
target 是
run()
方法要调用的可调用对象。它的默认值为None
,表示什么也没叫。 ... args 是目标调用的参数元组。
在调用(p1 = Process(target=add(a))
时,您将add()
函数的 result 作为target
回调而不是add()
传递功能本身。