2017-02-06 4 views
0

Я могу запускать несколько сценариев Python одновременно из сценария bash, как это;Выполнение нескольких сценариев Python одновременно, а затем последовательно

#!/bin/bash 
python pr1.py & 
python pr2.py & 
python aop.py & 
python loader.py & 

Но что, если я хочу, чтобы пакет запускался одновременно, и после того, как они запускались, начните несколько раз подряд. Будет ли эта работа ?:

#!/bin/bash 
python pr1.py & 
python pr2.py & 
python ap.py & 
python loader.py 
python cain.py 
python able.py 
+0

Что вы думаете? –

ответ

3

На ваш Баш скрипт вы можете просто добавить команду wait так:

#!/bin/bash 
python pr1.py & 
python pr2.py & 
python ap.py & 
wait 
python loader.py 
python cain.py 
python able.py 

wait, очевидно, дождитесь завершения всех заданий (фоновый прогон, которые вы уволили), чтобы продолжить.

0

С помощью команды & вы работаете сценарии в фоновом режиме. вы можете добавить проверку в цикл, чтобы выполнить команду заданий и посмотреть, продолжает ли он возвращать список заданий. когда он останавливается, вы можете продолжить свою следующую партию вызовов python.

+0

У Bash есть команда 'wait'. –

+0

Это, вероятно, была бы лучшей альтернативой. Я могу отредактировать свой ответ, или вы можете добавить его Джош. – LhasaDad

4

После того, как вы положили & в конце, он работает как фоновый процесс. Следовательно, все скрипты, заканчивающиеся на &, выполняются параллельно.

Чтобы запустить другие 3 сценария в последовательном порядке, вы можете попробовать оба:

&& запускает следующий скрипт только если предыдущий скрипт успешно запустить

python loader.py && python cain.py && python able.py 

|| запускает скрипты последовательно, независимо от результата предшествующего сценария

python loader.py || python cain.py || python able.py 
+0

Отличный ответ - спасибо. – manners

+0

Можете ли вы принять ответ, если считаете, что он решил вашу проблему? –

0

Почему бы не попробовать?

#1.py 
import time 
time.sleep(3) 
print("First script") 

#2.py 
import time 
time.sleep(3) 
print("Second script") 

Если вы кладете процессы в фоновом режиме, вы увидите выход из обоих сценариев питона одновременно.

#!/bin/bash 
python 1.py & 
python 2.py & 

Если выполнить его без &, то вы увидите выход из второго сценария через 6 секунд.

#!/bin/bash 
python 1.py 
python 2.py 

PS: Будьте осторожны, чтобы заботиться о зависимостях и проблем одновременно доступа во время работы его параллельно

 Смежные вопросы

  • Нет связанных вопросов^_^