所以我有這樣的陣列:
matrix = [[1, 2],[3, 4],[5, 6]]
我希望代碼回傳 1,因為它是這個陣列中的最小值。我知道如何用簡單的方法來做,但是當我想使用多執行緒時我很難。我試過這種方式:
import threading
matrix = [[1, 2],[3, 4],[5, 6]]
def min(n, **total):
if matrix[n][0] <= matrix[n][1]:
minThreads['minThreads'] = matrix[n][0]
else:
minThreads['minThreads'] = matrix[n][1]
minThreads = {"minThreads":0}
for i in range(len(matrix)):
t = threading.Thread(target=min, args=(i,), kwargs=minThreads)
t.start()
print(minThreads['minThreads'])
但它回傳 5 而不是 1。您是否有任何想法如何實作?任何幫助將不勝感激!
uj5u.com熱心網友回復:
你寫一行的最低值,不管它的值。在您的情況下,最后一行最后運行,請參閱 5 < 6, => 在 1 上寫入 3 后寫入 5。您應該添加與最小值的比較。
import threading
matrix = [[1, 2],[3, 4],[5, 6]]
def min(n, **total):
if matrix[n][0] <= matrix[n][1]:
if(matrix[n][0]<minThreads['minThreads']):
minThreads['minThreads'] = matrix[n][0]
else:
if(matrix[n][1]<minThreads['minThreads']):
minThreads['minThreads'] = matrix[n][1]
minThreads = {"minThreads":matrix[0][0]}
for i in range(len(matrix)):
t = threading.Thread(target=min, args=(i,), kwargs=minThreads)
print('thread ',i)
t.start()
print(minThreads['minThreads'])
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/359317.html
