如何在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
相关产品推荐
相关产品推荐

