Issue #15881: Clarify comment in exit function

This commit is contained in:
Richard Oudkerk 2012-09-13 17:27:15 +01:00
parent 0b90d66342
commit e8cd6bb127
1 changed files with 11 additions and 8 deletions

View File

@ -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: