Issue #15881: Clarify comment in exit function
This commit is contained in:
parent
0b90d66342
commit
e8cd6bb127
|
@ -290,14 +290,17 @@ def _exit_function(info=info, debug=debug, _run_finalizers=_run_finalizers,
|
||||||
|
|
||||||
if current_process() is not None:
|
if current_process() is not None:
|
||||||
# We check if the current process is None here because if
|
# We check if the current process is None here because if
|
||||||
# it's None, any call to ``active_children()`` will throw an
|
# it's None, any call to ``active_children()`` will throw
|
||||||
# AttributeError (active_children winds up trying to get
|
# an AttributeError (active_children winds up trying to
|
||||||
# attributes from util._current_process). This happens in a
|
# get attributes from util._current_process). One
|
||||||
# variety of shutdown circumstances that are not well-understood
|
# situation where this can happen is if someone has
|
||||||
# because module-scope variables are not apparently supposed to
|
# manipulated sys.modules, causing this module to be
|
||||||
# be destroyed until after this function is called. However,
|
# garbage collected. The destructor for the module type
|
||||||
# they are indeed destroyed before this function is called. See
|
# then replaces all values in the module dict with None.
|
||||||
# issues #9775 and #15881. Also related: #4106, #9205, and #9207.
|
# For instance, after setuptools runs a test it replaces
|
||||||
|
# sys.modules with a copy created earlier. See issues
|
||||||
|
# #9775 and #15881. Also related: #4106, #9205, and
|
||||||
|
# #9207.
|
||||||
|
|
||||||
for p in active_children():
|
for p in active_children():
|
||||||
if p._daemonic:
|
if p._daemonic:
|
||||||
|
|
Loading…
Reference in New Issue