我試圖想出一種方法讓線程在同一個目標上工作而不會產生干擾。在這種情況下,我使用4個線程將0到90,000之間的每個數字相加。此代碼運行,但幾乎立即結束(運行時間:0.00399994850159秒),並且只輸出0.原來我想用一個全局變量來做,但我擔心線程會相互干擾(即兩線程加倍由於讀取/寫入的奇怪時間而計數或跳過數字)。相反,我事先分配了工作量。如果有更好的方法來做到這一點,請分享。這是我的簡單的試圖獲得多線程的一些經驗的方式。謝謝Python線程可以在同一個進程上工作嗎?
import threading
import time
start_time = time.time()
tot1 = 0
tot2 = 0
tot3 = 0
tot4 = 0
def Func(x,y,tot):
tot = 0
i = y-x
while z in range(0,i):
tot = tot + i + z
# class Tester(threading.Thread):
# def run(self):
# print(n)
w = threading.Thread(target=Func, args=(0,22499,tot1))
x = threading.Thread(target=Func, args=(22500,44999,tot2))
y = threading.Thread(target=Func, args=(45000,67499,tot3))
z = threading.Thread(target=Func, args=(67500,89999,tot4))
w.start()
x.start()
y.start()
z.start()
w.join()
x.join()
y.join()
z.join()
# while (w.isAlive() == False | x.isAlive() == False | y.isAlive() == False | z.isAlive() == False): {}
total = tot1 + tot2 + tot3 + tot4
print total
print("--- %s seconds ---" % (time.time() - start_time))