考虑到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。这有助于。 –