[New-bugs-announce] [issue35999] multpirocessing.Process alive after SIGTERM on parent

Defert report at bugs.python.org
Fri Feb 15 06:55:24 EST 2019


New submission from Defert <laurent_defert at 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 at host~# python3 test.py &
[1] 14749
parent pid 14749
worker 14751 1
worker 14750 0
user at host:~# 
user at host:~# kill 14749
[1]+  Terminated              python3 test.py
user at 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 <report at bugs.python.org>
<https://bugs.python.org/issue35999>
_______________________________________


More information about the New-bugs-announce mailing list