【发布时间】:2018-07-23 15:58:06
【问题描述】:
我有一个python3 trainer 命令,它接受输入
- trainer.py 脚本文件名
- 日期
- 输入数据文件
- 输出参数文件
我想为 10 个(增量即+1)日期调用此命令,从而产生 10 个输出文件。其他 2 个输入文件对于所有 10 个命令都是相同的。我想知道如何跨 10 个线程 (Linux) 并行调用这些命令。
【问题讨论】:
标签: python linux bash python-3.x terminal
我有一个python3 trainer 命令,它接受输入
我想为 10 个(增量即+1)日期调用此命令,从而产生 10 个输出文件。其他 2 个输入文件对于所有 10 个命令都是相同的。我想知道如何跨 10 个线程 (Linux) 并行调用这些命令。
【问题讨论】:
标签: python linux bash python-3.x terminal
选项 1:在parallel 工具中使用。
GNU 并行是一个外壳工具,用于使用一台或多台计算机并行执行作业。作业可以是单个命令,也可以是必须为输入中的每一行运行的小脚本。典型的输入是文件列表、主机列表、用户列表、URL 列表或表列表。作业也可以是从管道读取的命令。然后 GNU 并行可以拆分输入并将其并行传输到命令中。
选项 2:手动管理作业
要在后台运行作业,只需在命令末尾附加 &。
有用的命令:
jobs -r # list of running
kill -SIGSTOP %N # suspend job N
kill -SIGCONT %N # resume job N
示例:
$ sleep 30 & # <- run in background
$ sleep 60 & # <- run in background
$ sleep 60 & # <- run in background
# list of running jobs
$ jobs -r
[1] Running sleep 30 &
[2]- Running sleep 60 &
[3]+ Running sleep 40 &
# kill job [3]
$ kill %3
# list of jobs
$ jobs
[1] Running sleep 30 &
[2]- Running sleep 60 &
[3]+ Terminated sleep 40
【讨论】: