为什么主线程的运行时间不是两个子线程运行时间之和
来源: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回答了我的问题,感谢人工智能!
112023-03-29
相似问题
关于线程并行问题
回答 2
当不设置setDaemon的时候的情况
回答 1