考虑到GIL,我本以为这个程序能在9秒内完成,但令我惊讶的是,它在4秒内就结束了。寻找可能的原因还是我遗漏了什么
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()
时间execution:- 你知道吗
无螺纹-9秒
带螺纹-4秒
通常情况下,如果不使用多线程,这个程序会在9秒内完成,因为python会一行一行地运行,所以当您放置time.sleep(1)时,python只需等待一秒钟,另一方面不会做任何事情。但是当您使用多线程时,程序会分别运行线程函数。例如,如果你调用线程函数两次,线程函数在同一时间逐行运行
在这个程序中,调用线程函数3次。第一次调用,python为i=1,i=2,i=3等待3秒,第二次调用,python为i=4,i=5,i=6等待3秒,最后一次调用python为i=6,i=7,i=8,i=9等待4秒。这些代码彼此独立运行,所以这个程序在4秒内完成,因为最大的时间是4秒
相关问题 更多 >
编程相关推荐