簡體   English   中英

與python並行執行代碼

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM