You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 19:10:17