[issue35122] Process not exiting on unhandled exception when using multiprocessing module

Pablo Galindo Salgado report at bugs.python.org
Wed Oct 31 16:11:34 EDT 2018


Pablo Galindo Salgado <pablogsal at gmail.com> added the comment:

Unless I don't understand the issue correctly, this is documented here:

https://docs.python.org/3/library/multiprocessing.html#multiprocessing-programming

Bear in mind that a process that has put items in a queue will wait before terminating until all the buffered items are fed by the “feeder” thread to the underlying pipe. (The child process can call the Queue.cancel_join_thread method of the queue to avoid this behaviour.)

This means that whenever you use a queue you need to make sure that all items which have been put on the queue will eventually be removed before the process is joined. Otherwise you cannot be sure that processes which have put items on the queue will terminate. Remember also that non-daemonic processes will be joined automatically.


In you example, if you add:

ch._queue.get()

before raising the exception, the program does not hang anymore once the item is taken out of the queue.

----------
nosy: +pablogsal

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue35122>
_______________________________________


More information about the Python-bugs-list mailing list