Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 13, 2015 12:30:21

Chocobo
Зарегистрирован: 2014-10-07
Сообщения: 14
Репутация: +  1  -
Профиль   Отправить e-mail  

Подпроцесс

Добрый день!

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

Другими словами, необходимо чтоб родительский скрипт вызвал подпроцесс и завершился, а дочерний отрабатывал дальше.

Добавлю: python2.6, ОС - CentOS'и и возможно freebsd

сейчас обнаружил os.fork, но пока не понял, то ли это что мне нужно…

Отредактировано Chocobo (Авг. 13, 2015 12:43:59)

Офлайн

#2 Авг. 13, 2015 13:02:07

Chocobo
Зарегистрирован: 2014-10-07
Сообщения: 14
Репутация: +  1  -
Профиль   Отправить e-mail  

Подпроцесс

Вопрос снимается, я копал в нужную сторону:

import os,time
pid=os.fork()        # создаём дочерний процесс
if pid!=0:             # завершается родитель, дочерний вернет pid =0
    sys.exit(0) 
while True            # Дальше работает только форкнутый процесс
    time.sleep(10)

P.s: Почитать можно здесь: https://docs.python.org/2/library/os.html#os.fork и http://www.cyberforum.ru/python/thread630830.html

Отредактировано Chocobo (Авг. 13, 2015 13:04:17)

Офлайн

#3 Авг. 13, 2015 15:05:39

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Подпроцесс

Chocobo
вообще для запуска внешних приложений есть модуль subprocess . fork работает только для UNIX подобных систем. Это конечно ваш случай, но все же subprocess может разные задачи решать.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#4 Авг. 14, 2015 11:27:39

Chocobo
Зарегистрирован: 2014-10-07
Сообщения: 14
Репутация: +  1  -
Профиль   Отправить e-mail  

Подпроцесс

JOHN_16
Спасибо за дополнение, с subprocess я немножко знаком.
Поправьте, если я не прав, насколько я понял при вызове subprocess.call() - родитель будет ждать исполнения функции, а мне нужно было продолжить обработку только после завершения родительского процесса.

Офлайн

#5 Авг. 14, 2015 20:48:38

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Подпроцесс

Chocobo
subprocess.call()

Есть subprocess.Popen. вообще в этом модуле много чего есть кроме call читайте документацию.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version