【发布时间】:2019-04-29 14:31:25
【问题描述】:
我最近一直在尝试以一种比打开多个终端实例并分别在脚本中执行更方便的方式并行运行我的脚本。
过去几天我一直在尝试学习如何使用 gnu_parallel,但我仍然有点无能为力,希望有人能提供一个直接的例子。
假设我有一个名为 blah.exe 的 g++ 编译代码和一个名为 blah.sh 的 bash 脚本,它们可以完美地单独运行,但我想在不同的目录中执行它们。
我一直在阅读 https://www.gnu.org/software/parallel/man.html#EXAMPLE:-Working-as-xargs--n1.-Argument-appending
和
https://www.biostars.org/p/182136/
但我对语法并不完全清楚
要连续运行这些,我会这样做:
for i in 1 2 3 4
mv ./blah.exe directory$i
cd directory$i
./blah.exe all
cd ..
end
类似
for i in 1 2 3 4
mv ./blah.sh directory$i
cd directory$i
source ./blah.sh all
cd ..
end
我试图了解如何在一个命令中使用并行将此负载拆分为 4 个逻辑线程。
有人可以为此提供一个例子吗?
感谢您的宝贵时间。
【问题讨论】:
-
您的脚本是否会影响任何可能使并行化更加困难的共享资源?
-
如果你想在
bash的后台运行一个进程,那么将&附加到命令中。另见en.wikipedia.org/wiki/Job_control_(Unix) -
Jesper,是的,我可以使用 bash 和 &,但我想编写一个脚本来使用 gno_parallel 进行并行化
-
Reda,据我所知,我用心分配,不会特别辛苦
标签: c++ linux bash parallel-processing gnu-parallel