Как запустить сценарий python параллельно с другими аргументами в linux? - PullRequest
2 голосов
/ 22 марта 2020

У меня есть сценарий python, который принимает аргумент, подобный следующему.

conda Activate Base python myScript.py arg1

Я подключен к своему серверу через s sh так что не будет оконной системы. Я хочу запустить 5 разных сценариев параллельно. Как, например,

#!/bin/bash
conda activate base
for i in arg1 arg2 arg3 arg4 arg5
do
  python myScript.py $i
done

Но это позволило бы запускать код один за другим. Как мне запустить его параллельно?

Ответы [ 2 ]

1 голос
/ 22 марта 2020

С GNU Parallel

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

Кроме того, добавьте шебанг в качестве первой строки вашего скрипта следующим образом:

#!/usr/bin/env python

и сделайте ваш скрипт исполняемым так:

chmod +x myScript.py

тогда вы можете прекратить указывать вашей оболочке использовать Python каждый раз, когда вы хотите запустить ее, и просто используйте:

./myScript.py arg
0 голосов
/ 22 марта 2020

Вы можете выполнить их в фоновом режиме, используя &:

for i in arg1 arg2 arg3 arg4 arg5
do
  python myScript.py $i &
  # Here ---------------^
done
...