You need to enable JavaScript to run this app. 如何在Python中实现两个函数同时并行运行?
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中实现两个函数同时并行运行?

并行运行两个Python函数的实现方法

要实现两个函数同步执行、整体耗时约4秒(匹配最长任务的执行时长,而非顺序执行的2+4=6秒),可以通过两种Python原生内置方案实现,无需额外安装第三方依赖:

方案1:使用 threading 多线程实现

这是最基础的手动管理线程的实现方式,代码如下:

import time
import threading

def short_task():
    time.sleep(2)
    # 打印仅用于直观展示任务完成顺序,不改动原有函数核心逻辑
    print("短任务执行完成")

def long_task():
    time.sleep(4)
    print("长任务执行完成")

if __name__ == "__main__":
    start_time = time.time()
    # 为每个待运行的函数创建独立线程
    thread1 = threading.Thread(target=short_task)
    thread2 = threading.Thread(target=long_task)
    # 启动两个线程,进入同步执行状态
    thread1.start()
    thread2.start()
    # 阻塞等待两个线程全部执行完成
    thread1.join()
    thread2.join()
    print(f"程序总耗时:{time.time() - start_time:.2f} 秒")

实现逻辑说明:

  • 两个线程启动后,会在独立执行流中同时运行,short_task等待2秒的过程中,long_task也在同步等待4秒,不存在顺序排队的等待叠加
  • join()方法的作用是让主线程等待所有子线程跑完再退出,避免主线程提前结束导致任务中断

方案2:使用内置线程池 ThreadPoolExecutor 实现

这是Python3.2+版本自带的更简洁的并发写法,不需要手动管理线程的生命周期,代码如下:

import time
from concurrent.futures import ThreadPoolExecutor

def short_task():
    time.sleep(2)
    print("短任务执行完成")

def long_task():
    time.sleep(4)
    print("长任务执行完成")

if __name__ == "__main__":
    start_time = time.time()
    # 最多允许2个并发工作线程的池,适配当前两个任务的规模
    with ThreadPoolExecutor(max_workers=2) as pool:
        pool.submit(short_task)
        pool.submit(long_task)
    print(f"程序总耗时:{time.time() - start_time:.2f} 秒")

实现逻辑说明:

  • 通过上下文管理器(with语法)自动管理线程池的创建、销毁流程
  • 自动等待池内所有提交的任务执行完成后再退出,代码更简洁不易出错

适配场景说明

上述方案完全适配当前示例场景。示例中两个函数的核心逻辑是time.sleep()的等待操作,属于IO密集型任务,执行等待过程中Python会释放全局解释器锁(GIL),两个线程可以真正并行运行,不会出现逻辑阻塞。
如果后续替换为纯CPU计算密集型任务(比如大规模数值运算、视频帧处理),多线程会受GIL限制无法实现真正并行,此时才需要替换为多进程方案。


内容的提问来源于stack exchange,提问作者Johann Lau

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.05 15:06:07