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

如何用Bash脚本批量并行执行Python命令(每次4进程)

批量并行执行Python脚本的Bash解决方案

原脚本的问题

  • 数组元素访问错误:input_list[n] 不符合Bash数组语法,正确写法应为 ${input_list[$n]},否则会被当成普通字符串而非数组元素
  • 缺少最后一批进程的等待:循环结束后,最后一批(不足4个或刚好4个)的后台进程可能仍在运行,脚本会直接退出,导致进程未完成
  • 初始wait逻辑冗余:第一次循环时还未启动任何后台进程就执行wait,虽不影响功能,但逻辑不够严谨

修正后的脚本

情况1:输入文件存放在数组中

假设你已定义输入文件数组 input_list,例如:

input_list=(input_0.txt input_1.txt ... input_11.txt)

修正后的并行控制脚本:

# 设置每次并行处理的进程数
MAX_PARALLEL=4
# 初始化进程计数器
j=0

for ((n=0; n<12; n++)); do
    # 启动后台进程处理当前输入文件
    python test.py -i "${input_list[$n]}" -p parameter_1 -o "output_$n" &
    # 每启动指定数量的进程后,等待所有后台进程完成再继续下一批
    ((j++))
    if ((j % MAX_PARALLEL == 0)); then
        wait
        j=0  # 重置计数器
    fi
done
# 等待最后一批未完成的进程执行完毕
wait

情况2:输入文件命名有规律(如input_0到input_11)

如果输入文件按固定规则命名,无需数组,直接生成文件名即可:

MAX_PARALLEL=4
j=0

for ((n=0; n<12; n++)); do
    python test.py -i "input_$n" -p parameter_1 -o "output_$n" &
    ((j++))
    if ((j % MAX_PARALLEL == 0)); then
        wait
        j=0
    fi
done
wait

脚本说明

  • MAX_PARALLEL=4:自定义每次并行处理的进程数,可根据机器性能调整
  • &:将Python脚本放入后台运行,实现并行处理
  • wait:暂停脚本执行,直到所有后台进程完成,确保一批任务全部结束后再启动下一批
  • 循环末尾的wait:保证最后一批(可能不足4个)的进程全部执行完成后脚本才退出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 19:42:14