如何打包单EXE实现Python脚本基于CSV不同输入并行多次运行
Python脚本并行执行+单EXE打包实现方案
整个实现不需要改动原有业务逻辑,只需新增参数解析和多进程调度代码即可,步骤如下:
1. 脚本合并改造
将原有业务逻辑和并行调度逻辑整合到同一个脚本中,示例代码如下:
import sys import pandas as pd import multiprocessing # 工作进程逻辑:处理单组参数 def worker(row_idx): # 读取CSV对应行的参数 df = pd.read_csv("params.csv") run_params = df.iloc[row_idx].to_dict() # -------------------------- # 此处粘贴你原本的业务代码 # 所有参数直接从run_params中取值即可,原有逻辑无需修改 # -------------------------- print(f"第{row_idx}行任务执行完成,使用参数:{run_params}") if __name__ == "__main__": # Windows打包多进程程序必须加这行,否则会启动失败 multiprocessing.freeze_support() # 无额外参数时走调度模式:启动所有并行任务 if len(sys.argv) == 1: df = pd.read_csv("params.csv") total_task = len(df) print(f"读取到{total_task}组参数,启动并行执行") # 若参数行数过多,可调整processes参数限制最大并发数,例如processes=8 with multiprocessing.Pool(processes=total_task) as pool: pool.map(worker, range(total_task)) print("所有任务执行完毕") # 传入行号参数时走单任务模式:仅执行对应行的任务 else: target_row = int(sys.argv[1]) worker(target_row)
2. 依赖安装
安装打包需要的工具:
pip install pyinstaller pandas
如果你的原有业务逻辑有其他依赖,也要确保已经安装并能正常运行。
3. 打包为单个EXE
在脚本所在目录执行打包命令,把your_script.py替换为你的脚本文件名:
pyinstaller -F your_script.py
打包完成后,生成的单个EXE文件会保存在同级的dist文件夹中。
4. 运行方式
把存储参数的CSV文件重命名为params.csv,和生成的EXE放在同一个文件夹下,直接双击EXE即可自动读取所有参数行,并行启动对应数量的进程执行。
注意事项
- 如果参数行数超过CPU核心数,建议限制进程池最大并发数,避免系统资源占满导致卡顿,比如将
processes=total_task改为processes=4,最多同时跑4个任务,自动排队调度。 - 要是运行EXE闪退,可以打开CMD,把EXE拖到CMD窗口里回车运行,就能看到报错信息,方便排查问题。
- 若CSV路径需要自定义,可以修改代码里的文件路径,或者新增命令行参数传入CSV路径。
内容的提问来源于stack exchange,提问作者CodingNoob
相关产品推荐
相关产品推荐

