[英]Executing code in parallel with python
我正在尝试在python中使用多线程。 我写了以下代码开始。 它应该并行计算列表中包含的数字平方,并将结果返回到名为“结果”的列表中。 我写这是为了并行化包含for循环的脚本。
但是,我收到一个TypeError告诉我'int object is not callable'。 我猜这是因为这行代码: 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()
尝试这个:
thr.append(threading.Thread(target=square, args=(k,)))
而不是thr.append(threading.Thread(target=square(k)))
之所以收到该错误,是因为最终在代码中调用了该函数。 调用该函数时, square(k)
返回一个不可调用的int
。
请参阅文档 。
另外,正如unutbu在对该问题的评论中指出的那样,您正在执行XOR而不是计算平方。 平方的计算方式是: x**2
而不是x^2
。
同样,您要在将结果添加到列表之前返回结果,因此,如果要将数字的平方添加到列表result
,则可能要颠倒函数定义中两行的顺序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.