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