On 3/15/2011 11:19 PM, James Mills wrote:
On Wed, Mar 16, 2011 at 12:34 PM, John L. Stephens
<lists.jksteph...@gmail.com>  wrote:
I would have expected the daemonic children processes to terminate with the
parent process, regardless of how the parent process terminates, either
normally or forcefully.
As I understand it. If you forcibly kill the parent process
with the KILL signal then any child procesases that were
created become zombies. You also can't handle the KILL
signal in your application (nor can the multiprocessing library)
and so it therefore cannot cleanup  and terminate any child
processes in the normal way.

cheers
James

So as I have contemplated this in the wee hours of the morning (risking zombie status myself I might add), my rationale for the behavior I am seeing is thus:

As the parent process terminates 'normally' (either through normal termination or SIGINT termination), mulitprocessing steps in and performs child process cleanup via the x.terminate() method. If the parent terminates any other way, multiprocessing doesn't have the opportunity to cleanup.

I would have thought (silly me) the child process would also monitor his parent process, and when the child can no longer 'see' or 'sense the presence' of its parent, it too would terminate.

I can certainly make the children monitor the parent as well, I was just hoping I wouldn't have to put in additional code and overhead.

John



--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to