Уведомления

Группа в Telegram: @pythonsu

#1 Март 17, 2014 08:40:58

buddha
От:
Зарегистрирован: 2012-03-02
Сообщения: 422
Репутация: +  15  -
Профиль   Отправить e-mail  

Породить новый процесс через multiprocessing как через subprocess?

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

Есть функция main() в которой прописана логика работы этого класса. Пробую запускать эту функцию через:

from multiprocessing import Process
 
def main():
    rne = NotificationExchangerRobot(log_file='ner_log.txt',
                                     config_file='ner_config.ini',
                                     interval=30)
    while True:
        rne.reread_config()
 
        remiders_dict = rne.call_nearest_reminders()
        results = rne.call_add_notification(remiders_dict)
        rne.call_delivery_result(results, remiders_dict)
 
        rne.pause()
 
 
if __name__ == '__main__':
    p = Process(target=main)
    p.start()
    print(p.pid)

После запуска, основной процесс не завершается. Хочется , как в случае subprocess, основной процесс породил дочерний и завершился, а дочерний работал сам по себе…

ОС - Windows 7

Офлайн

#2 Март 17, 2014 13:09:59

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

Породить новый процесс через multiprocessing как через subprocess?

а как вы управлять им будете? опишите.

Задача то какая перед вами стоит - запускать отдельным процессом метод класса - а коммуникация с родительским процессом? обмен данными? связи состояний классов? т.е. есть ли взаимосвязи?

а то если все просто то банально вызов типа subprocess.Popen('python -c “import a; a.A().main”')
Простите если ересь предлагаю, я уже почти сплю:)



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

Офлайн

#3 Март 17, 2014 14:14:39

buddha
От:
Зарегистрирован: 2012-03-02
Сообщения: 422
Репутация: +  15  -
Профиль   Отправить e-mail  

Породить новый процесс через multiprocessing как через subprocess?

Пока что сделал порождение через subprocess.Popen().

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

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version