Python如何根据用户输入线程数实现多线程并行执行,使耗时约3秒
解决多线程并行执行的耗时问题
你之前的代码之所以耗时翻倍,核心问题是在循环里启动线程后立刻调用了join()——这会让主线程必须等当前子线程跑完,才会去创建下一个线程,相当于把多线程变成了串行执行,总耗时自然是每个线程时间的累加。
要让所有线程并行运行,总耗时接近3秒,需要把「启动所有线程」和「等待所有线程结束」分成两个步骤:
import time from threading import Thread start_time = time.time() threads_number = int(input('Input count of threads: ')) # 输入2 threads = [] # 第一步:批量创建并启动所有线程 for _ in range(threads_number): thread = Thread(target=time.sleep, args=(3,)) threads.append(thread) thread.start() # 第二步:统一等待所有线程执行完毕 for thread in threads: thread.join() print("--- %s seconds ---" % (time.time() - start_time))
修改说明:
- 用空列表存储线程对象,不需要预先创建超大列表,更简洁高效
- 第一个循环只做「创建+启动」,让所有线程同时开始执行
time.sleep(3) - 第二个循环才调用
join(),让主线程等所有子线程都完成后再计算总耗时
这样修改后,不管输入多少个线程,总耗时都会稳定在3秒左右,和手动指定线程数的效果一致。
内容的提问来源于stack exchange,提问作者kamazz
相关产品推荐
相关产品推荐

