такая ситуация:
в главном потоке создается словарь
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 в браузере. Не помогло