MaJ*_*R21 3 scripting bash parallelism
我想使用我制作的 Python 工具运行一些模拟。问题是我必须使用不同的参数/参数和所有内容多次调用它。
现在,我正在for
为任务使用多个循环,例如:
for simSeed in 1 2 3 4 5
do
for launchPower in 17.76 20.01 21.510 23.76
do
python sim -a $simSeed -p $launchPower
done
done
Run Code Online (Sandbox Code Playgroud)
为了使模拟同时运行,我&
在调用模拟器的行的末尾附加了 a 。
python sim -a $simSeed -p $launchPower &
Run Code Online (Sandbox Code Playgroud)
使用这种方法,我可以运行多个这样的种子。但是,由于我的计算机内存有限,我想重新编写上面的脚本,以便它for
并行启动内循环和for
顺序启动外循环。
例如,对于simSeed = 1
,我希望 5 个不同的进程以launchPower
等于17.76 20.01 21.510 23.76
. 只要这部分已经完成,我希望脚本去竞选simSeed = 2
并再次利用5种不同的并行处理launchPower
等于17.76 20.01 21.510 23.76
。
我怎样才能完成这个任务?
域名注册地址:
我希望外循环按顺序运行,内循环并行运行,这样当内循环的最后一个并行进程完成时,外循环移动到下一次迭代。
GNU parallel 有几个选项来限制并行启动作业时的资源使用。
两个嵌套循环的基本用法是
parallel python sim -a {1} -p {2} ::: 1 2 3 4 5 ::: 17.76 20.01 21.510 23.76
Run Code Online (Sandbox Code Playgroud)
如果您想同时启动最多 5 个作业,例如,您可以说
parallel -j5 python <etc.>
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用该--memfree
选项仅在有足够的可用内存时启动新作业,例如至少 256 MByte
parallel --memfree 256M python <etc.>
Run Code Online (Sandbox Code Playgroud)
请注意,如果内存低于规定的“保留”值的 50%,最后一个选项将终止最近启动的作业(但它将自动重新排队以追赶)。
归档时间: |
|
查看次数: |
920 次 |
最近记录: |