python - 与 python 并行执行代码

标签 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()

最佳答案

试试这个:

thr.append(threading.Thread(target=square, args=(k,)))

而不是thr.append(threading.Thread(target=square(k)))

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

请参阅documentation .

此外,正如 unutbu 在问题评论中指出的那样,您正在进行异或而不是计算平方。平方的计算方式如下:x**2 而不是 x^2

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

关于python - 与 python 并行执行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22301531/

相关文章:

c - MPI_Recv 期间 MPI 程序卡住

python - 如何使用 keras 和 tensorflow 改进预测

python - 为什么我的 FOR 循环返回 6 个结果而不是 1 个

python - Tornado 和阻塞代码

c++ - 谐波级数和 c++ MPI

scala - cats-effect:如何获得隐式的 NonEmptyParallel

python - 检查两个 Python 函数是否相等

python - 如何在 sns countplot 中仅堆叠一根柱

java - java中不同机器上并行运行不同的java程序

c - MPI_Gather() 将中心元素放入全局矩阵中