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

如何在Python中并发运行多目录下的可执行文件

实现多文件夹下Test.py的并发运行

针对你的需求,这里提供两种Python并发实现方案,分别适用于不同场景:

方法一:多进程(推荐CPU密集型任务)

多进程可以绕过Python的GIL限制,充分利用多核CPU资源,适合Test.py中包含大量计算的场景。

import os
import multiprocessing

def execute_test(folder):
    # 切换到目标文件夹
    os.chdir(folder)
    try:
        # 执行Test.py代码
        exec(open("Test.py").read())
    finally:
        # 切回原工作目录,避免影响其他操作
        os.chdir("..")

if __name__ == "__main__":
    target_folders = ["1", "2", "3"]
    processes = []
    
    # 创建并启动进程
    for folder in target_folders:
        proc = multiprocessing.Process(target=execute_test, args=(folder,))
        processes.append(proc)
        proc.start()
    
    # 等待所有进程执行完成
    for proc in processes:
        proc.join()

关键说明

  • 每个进程拥有独立的工作目录,切换操作不会互相干扰
  • finally块确保无论Test.py执行成功与否,都会切回原目录
  • 若需要进程间通信(比如传递执行结果),可以使用multiprocessing.Queue或Manager工具

方法二:多线程(适合IO密集型任务)

如果Test.py以IO操作为主(比如文件读写、网络请求),多线程的开销更小,同样能实现并发效果。

import os
import threading

def execute_test(folder):
    original_dir = os.getcwd()
    os.chdir(folder)
    try:
        exec(open("Test.py").read())
    finally:
        # 必须切回原目录,因为多线程共享进程的工作目录
        os.chdir(original_dir)

if __name__ == "__main__":
    target_folders = ["1", "2", "3"]
    threads = []
    
    # 创建并启动线程
    for folder in target_folders:
        thread = threading.Thread(target=execute_test, args=(folder,))
        threads.append(thread)
        thread.start()
    
    # 等待所有线程执行完成
    for thread in threads:
        thread.join()

关键说明

  • 多线程共享进程的工作目录,必须在执行完成后切回原目录,否则后续线程的路径会出错
  • 若涉及共享数据操作,需要使用threading.Lock保证线程安全

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 13:55:28