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

为什么Python多线程脚本执行结果与顺序处理一致而非真正并行?

多线程输出与顺序执行一致的核心原因
  • 测试任务计算量远小于线程启动开销
    当前测试用的Supplier_list数组元素都是个位数,每个线程内的循环次数最多仅20次,实际执行耗时为微秒级,远低于线程启动的毫秒级开销。你按列表顺序依次启动线程,第一个线程启动完成后,在后续线程完成启动流程前就已经执行完全部逻辑输出结果,最终呈现顺序执行的效果。你放开代码中注释的大数值Supplier_list,放大每个线程的执行时长,就能观测到乱序输出的多线程特性。
  • CPython全局解释器锁(GIL)限制CPU密集型任务并行
    你编写的线程函数属于纯CPU计算类任务,CPython解释器的GIL机制会保证同一时间只有一个线程执行Python字节码,CPU密集型场景下的多线程本质是时间片轮转的并发,而非真正的并行。如果单线程任务执行时长很短,GIL还没触发切换前线程就已经执行完毕,自然不会出现乱序输出。
  • print函数内置线程锁的次要影响
    Python的print函数默认是线程安全的,内部自带互斥锁保证同一时间只有一个线程向标准输出写内容,一定程度上也会强化顺序输出的表现。
实现真正并行效果的修改方案
  • 针对CPU密集型任务,将threading多线程替换为multiprocessing多进程,绕开GIL限制实现多核并行
  • 测试时放大单任务的计算量,避免线程启动开销覆盖任务执行逻辑的效果

内容的提问来源于stack exchange,提问作者Nirav Prajapati

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 08:54:01