多线程python程序的执行时间

2024-06-16 11:23:39 发布

您现在位置:Python中文网/ 问答频道 /正文

考虑到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秒


Tags: inimport程序fordatagettimerange
1条回答
网友
1楼 · 发布于 2024-06-16 11:23:39

通常情况下,如果不使用多线程,这个程序会在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秒

相关问题 更多 >