New submission from Defert <laurent_def...@yahoo.fr>:
Hello, Using the multiprocessing.Process class on Python 3.5 (untested with other versions), child processes are not killed when the main process is killed. The doc mentions a "daemon" flag (https://python.readthedocs.io/en/latest/library/multiprocessing.html#multiprocessing.Process.daemon), which says "When a process exits, it attempts to terminate all of its daemonic child processes." However this does not seem to be the case, when the parent process is killed, all children remain alive whatever the value of the daemon flag is. Test code: from multiprocessing import Process from time import sleep from os import getpid def log(daemon_mode): while True: print('worker %i %s' % (getpid(), daemon_mode)) sleep(3) print('parent pid %i' % getpid()) a = Process(target=log, args=(0,), daemon=False) a.start() b = Process(target=log, args=(1,), daemon=True) b.start() while True: sleep(60) ###### To be run with: user@host~# python3 test.py & [1] 14749 parent pid 14749 worker 14751 1 worker 14750 0 user@host:~# user@host:~# kill 14749 [1]+ Terminated python3 test.py user@host:~# worker 14751 1 worker 14750 0 ---------- components: Library (Lib) messages: 335601 nosy: lids priority: normal severity: normal status: open title: multpirocessing.Process alive after SIGTERM on parent versions: Python 3.5 _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue35999> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com