Как создать отдельный процесс Python?

Мне нужно создать отдельный процесс Python, который запускает дополнительный скрипт.

Например:

main.py запускается и выводит некоторый вывод на консоль. Затем он порождает sub.py, который запускает новый процесс. Как только main.py породил sub.py, он должен завершиться, в то время как sub.py продолжает работать.

Спасибо.

Редактировать:

Когда я запускаю main.py, он печатает «main.py», но ничего больше, и sub.py не запускается.

main.py

print "main.py"

import subprocess as sp
process=sp.Popen('sub.py', shell=True, stdout=sp.PIPE, stderr=sp.PIPE)
out, err = process.communicate(exexfile('sub.py'))  # The output and error streams

raw_input("Press any key to end.")

sub.py

print "sub.py"
raw_input("Press any key to end.")

person KeyPick    schedule 10.04.2011    source источник
comment
Какая у вас операционная система? Вы запускаете main.py из какой-нибудь ide?   -  person eat    schedule 10.04.2011


Ответы (1)


исполняемый файл

Прямой подход:

execfile('main.py')

Подпроцесс

Предлагает детальный контроль над вводом и выводом, может запускать процессы в фоновом режиме:

import subprocess as sp
process=sp.Popen('other_file.py', shell=True, stdout=sp.PIPE, stderr=sp.PIPE)
out, err = process.communicate()  # The output and error streams.
person Adam Matan    schedule 10.04.2011
comment
Вам необходимо ввести данные в метод communicate. Скоро отредактирую мой ответ. - person Adam Matan; 10.04.2011
comment
Спасибо. Я добавил exexfile('sub.py') к методу communicate(), и теперь он запускает файл sub.py, но в той же консоли, так как же заставить его работать отдельно? Я, наверное, упускаю что-то очень простое, извините. Спасибо еще раз. - person KeyPick; 10.04.2011
comment
›› После того, как main.py породил sub.py, он должен завершиться, в то время как sub.py продолжает работать. - person geowar; 22.02.2013