为什么主线程的运行时间不是两个子线程运行时间之和

来源:11-2 多线程编程 - threading

ImClever

2023-03-28

import threading
import time


def count(n):
    start_time_inner = time.time()
    for i in range(n):
        sum(range(1000000000))
    end_time_inner = time.time()
    print("Function time taken: {:.2f} seconds".format(end_time_inner -
                                                       start_time_inner))
  

# 多线程运行时间
start_time = time.time()
t1 = threading.Thread(target=count, args=(2, ))
t2 = threading.Thread(target=count, args=(2, ))
# t1.daemon = False
t1.start()
t2.start()
t1.join()
t2.join()
end_time = time.time()
print("Multi-thread total time taken: {:.2f} seconds".format(end_time -
                                                             start_time))

上面的代码执行结果:

Function time taken: 58.98 seconds
Function time taken: 39.23 seconds
Multi-thread total time taken: 78.57 seconds

为什么在子线程都t1.join() t2.join(),主线程应该在等待两个子线程运行结束后,才执行join()方法后面的代码,也就是end_time的时间获取。

那么为什么实际结果,主线程所用的时间78.57s,并不是两个线程运行时间之和

写回答

1回答

ImClever

提问者

2023-03-29

GPT回答了我的问题,感谢人工智能!

//img.mukewang.com/szimg/6423a69009a37d6407890481.jpg

1
1
bobby
你这个给力了,试试直接把代码贴上去问问
2023-03-29
共1条回复

Python3高级核心技术97讲,高级进阶的必学课程

socket编程/多线程/多进程/线程池/asyncio并发编程/协程和异步IO

2121 学习 · 551 问题

查看课程