2010-12-10 2 views
3

Как выполнить программу из моей программы без блокировки до завершения исполняемой программы?Python: Как выполнить внешнюю программу

Я пробовал:

os.system() 

Но он останавливает свою программу, пока выполняется программа остановлена ​​/ закрыто. Есть ли способ разрешить моей программе работать после выполнения внешней программы?

ответ

11

Рассмотрите возможность использования подпроцесса .

подпроцесс порождает новый процесс, в котором запускается ваш внешнее приложение. Ваше приложение продолжает выполнение, пока выполняется другое приложение.

+3

Если вы явно не ждать. –

+2

'os.system' также запускает новый процесс -' subprocess' просто дает вам больше контроля над ним. –

2

Вы можете использовать модуль подпроцесса , но os.system также будет работать. Он работает через оболочку, поэтому вам просто нужно положить «&» в конец строки. Как и в интерактивной оболочке, она будет работать в фоновом режиме.

Если вам нужно получить какой-то вывод из него, однако, скорее всего, вы захотите использовать модуль подпроцесса.

1

Вы можете использовать subprocess для этого:

import subprocess 
import codecs 

# start 'yourexecutable' with some parameters 
# and throw the output away 
with codecs.open(os.devnull, 'wb', encoding='utf8') as devnull: 
    subprocess.check_call(["yourexecutable", 
          "-param", 
          "value"], 
          stdout=devnull, stderr=subprocess.STDOUT 
         ) 
Смежные вопросы