考慮到GIL,我預計這個程序在9秒內完成,但令我驚訝的是,它在4秒內結束。尋找可能的原因還是我錯過了什麼?多線程python程序的執行時間
import time
import threading
def get_data(start, end):
res = []
for i in range(start, end):
time.sleep(1)
res.append(i)
print res
range_list = [(1,4), (4,7), (6,10)]
for r in range_list:
t = threading.Thread(target=get_data, args = (r[0], r[1]))
t.start()
時間執行: -
不必穿線 - 9sec
螺紋加工 - 4秒
由於您正在產生3個線程,並且它們都不使用共享資源,所以它們都將同時休眠並完成*,因此4秒是正確的。 – Ibrahim
'睡眠'釋放GIL。請參閱http://stackoverflow.com/questions/1205328/scheduling-issues-in-python – cdarke
好的,謝謝@cdarke。這有助於。 –