问题描述
我有一个 python 脚本,它接受这样的参数。
conda 激活基础 python myScript.py arg1
我通过 ssh 连接到我的服务器,所以不会有窗口系统。 我想用我的脚本并行运行 5 个不同的脚本。 所以喜欢,
#!/bin/bash
conda activate base
for i in arg1 arg2 arg3 arg4 arg5
do
python myScript.py $i
done
但这只会让代码一个接一个地运行。 我如何并行运行它?
1楼
使用GNU 并行
parallel python myScript.py ::: arg1 arg2 arg3 arg4 arg5
GNU Parallel还可以为您在一台或多台服务器上执行ssh
,因此您无需登录:
parallel -S server 'conda activate base; python myScript.sh' ::: arg1 arg2 arg3 arg4 arg5
另外,添加一个shebang作为脚本的第一行,如下所示:
#!/usr/bin/env python
并使您的脚本可执行,如下所示:
chmod +x myScript.py
那么你可以停止告诉你的 shell 在每次你想要运行它时使用 Python 并且只使用:
./myScript.py arg
2楼
您可以使用&
在后台执行它们:
for i in arg1 arg2 arg3 arg4 arg5
do
python myScript.py $i &
# Here ---------------^
done