与python并行执行代码

big*_*ree 2 python parallel-processing

我试图在python中使用多线程.我编写了以下代码来开始.它应该并行计算列表中包含的数字的平方,并将结果返回到名为"result"的列表中.我写这个是为了并行化包含for循环的脚本.

但是,我得到一个TypeError告诉我"int对象不可调用".我猜这是因为这行代码thr.append(threading.Thread(target=square(k)))::在我读过的例子中,target是一个函数.但在我的例子中,我需要使用不同的参数调用相同的函数.我怎样才能做到这一点?

>>> def square(c):
...     return c^2
...     result.append(c^2)
... 



>>> def sqr():
...     thr = []
...     for k in l:
...         thr.append(threading.Thread(target=square(k)))
...     for t in thr:
...         t.start()
...     for i in thr:
...         t.join()
Run Code Online (Sandbox Code Playgroud)

gra*_*tii 5

试试这个:

thr.append(threading.Thread(target=square, args=(k,)))
Run Code Online (Sandbox Code Playgroud)

代替 thr.append(threading.Thread(target=square(k)))

您收到该错误是因为您最终在代码中调用了该函数.调用该函数时,square(k)返回一个int不可调用的函数.

请参阅文档.

另外,正如unutbu在问题的评论中指出的那样,你正在进行异或,而不是计算正方形.正方形以这种方式计算:x**2而不是x^2.

此外,在将结果添加到列表之前返回结果,因此如果要将数字的平方添加到列表中,可能需要反转函数定义中两行的顺序result.