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

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 в браузере. Не помогло