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

如何用Bash拆分文件列表并行启动4个Python内核执行脚本

Bash实现粗粒度4进程并行处理方案

核心前提:确认execute_function.py支持接收多个文件路径作为命令行位置参数,对传入的每个文件依次调用func(file)执行,即基础调用格式为python execute_function.py 文件1路径 文件2路径 ...。

零依赖原生Bash实现(无需安装额外工具)

不需要依赖任何第三方命令行工具,用Bash原生数组切片+后台进程即可实现,直接写如下shell脚本运行即可:

#!/bin/bash
# 替换为你的待处理文件所在目录,如需按后缀筛选可调整通配符,比如*.txt只取txt文件
FILES=(/path/to/your/input_dir/*)
# 每组文件数、并行进程数
PER_GROUP=25
PARALLEL_NUM=4

for ((i=0; i<PARALLEL_NUM; i++)); do
    # 切片取出当前组对应的文件列表
    current_group=("${FILES[@]:i*PER_GROUP:PER_GROUP}")
    # 后台启动独立Python进程处理当前组,&符号表示将进程放入后台独立运行
    # 如需保留日志可加重定向:python execute_function.py "${current_group[@]}" > run_$i.log 2>&1 &
    python execute_function.py "${current_group[@]}" &
done

# 阻塞等待所有后台Python进程执行完毕
wait
echo "全部100个文件处理完成"

实现说明:

  • 每个通过&启动的Python进程都是独立的操作系统进程,拥有完全独立的Python解释器内核,不受GIL锁限制,可真正并行跑满CPU核心
  • Bash原生数组切片自动完成每组25个文件的拆分,若文件总数不是刚好100(比如多2个),最后一组会自动取剩余所有文件,不会出现越界报错
  • 每个Python进程启动后会连续处理分配到的25个文件,不存在频繁启动/销毁解释器的额外开销,符合粗粒度暴力并行的需求

更简洁的实现(可安装GNU Parallel的场景)

如果运行环境允许安装GNU Parallel(Debian/Ubuntu执行apt install parallel,CentOS执行yum install parallel即可安装),不需要手动写分组逻辑,一行命令即可完成:

# -j 4 指定同时启动4个并行进程
# -N 25 指定给每个进程传入25个文件作为参数
parallel -j 4 -N 25 python execute_function.py ::: /path/to/your/input_dir/*

该方式鲁棒性更强,自动处理分组不均、进程异常退出提示、进度展示等逻辑,适合长期复用的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 15:33:21