[Python-Dev] Usage of the multiprocessing API and object lifetime
Le mar. 11 d?c. 2018 ? 17:06, Antoine Pitrou <solipsis at pitrou.net> a ?crit :
> > We are not talking about simple strings, but processes and threads.
> Right, but do those have an impact on the program's correctness, or
> simply on its performance (or memory consumption)?
I made a similar change in the socketserver: server_close() now waits
until child processes (ForkingMixIn) and threads (ThreadingMixIn)
I added an opt-in option "block_on_close" to get Python 3.6 behavior
I don't know if these changes are similar to my questions about
multiprocessing API, since socketserver didn't expose the list of
processes/threads and doesn't provide a method to wait until they
complete. Well... ForkingMixIn has an *undocumented*
collect_children() which is non-blocking by default (I added a
keyword-only 'blocking' parameter).
Another example: the close() method of an asyncio event loop doesn't
wait until threads/processes complete:
"asyncio: BaseEventLoop.close() shutdowns the executor without waiting
causing leak of dangling threads"
It's unclear to me how this issue should be fixed.