Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 9, 2012 15:46:47

Игнат
От:
Зарегистрирован: 2010-10-02
Сообщения: 224
Репутация: +  0  -
Профиль   Отправить e-mail  

python/multiprocessing Manager процесс не завершается

такая ситуация:
в главном потоке создается словарь

from multiprocessing import Manager, Process

man = Manager()
self.sqlite_storage = man.dict()

потом создается Process(), который при работе обращается к словарю

в выводе ps aux | grep python видим 3 процесса питона - один из них принадлежит этому Manager()

Если скрипт нормально завершит работу - то все процессы завершатся.

А если убить главный скрипт (он работает как cgi через апач) - то второй процесс завершается (он чекает спец. файл, куда кладется метка о необходимости завершения), а третий процесс от Manager() - остается висеть.

sudo strace -p 6644 -o test
cat test:
accept(8, <unfinished …>

Как бы его грамотно убить при завершении скрипта?

пробовал делать del для объекта Manager(), но из порожденного процесса, т.к. в основном процессе не знаю как перехватить нажатие Escape в браузере. Не помогло



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version