diff options
author | Antoine Pitrou <solipsis@pitrou.net> | 2014-12-07 00:28:27 (GMT) |
---|---|---|
committer | Antoine Pitrou <solipsis@pitrou.net> | 2014-12-07 00:28:27 (GMT) |
commit | 5db1bb81ff88c90364cfcf458bae8115126411d8 (patch) | |
tree | 334a5d67f565b3a103f068a82147b6bede9e1b20 /Doc | |
parent | b9859daeeb8ad767d2b2cc56f72736810114dd49 (diff) | |
download | cpython-5db1bb81ff88c90364cfcf458bae8115126411d8.zip cpython-5db1bb81ff88c90364cfcf458bae8115126411d8.tar.gz cpython-5db1bb81ff88c90364cfcf458bae8115126411d8.tar.bz2 |
Issue #22696: Add function :func:`sys.is_finalizing` to know about interpreter shutdown.
Diffstat (limited to 'Doc')
-rw-r--r-- | Doc/glossary.rst | 13 | ||||
-rw-r--r-- | Doc/library/gc.rst | 6 | ||||
-rw-r--r-- | Doc/library/sys.rst | 8 | ||||
-rw-r--r-- | Doc/library/weakref.rst | 6 |
4 files changed, 27 insertions, 6 deletions
diff --git a/Doc/glossary.rst b/Doc/glossary.rst index 92877bd..87e2d8a 100644 --- a/Doc/glossary.rst +++ b/Doc/glossary.rst @@ -402,6 +402,19 @@ Glossary than compiled ones, though their programs generally also run more slowly. See also :term:`interactive`. + interpreter shutdown + When asked to shut down, the Python interpreter enters a special phase + where it gradually releases all allocated resources, such as modules + and various critical internal structures. It also makes several calls + to the :term:`garbage collector <garbage collection>`. This can trigger + the execution of code in user-defined destructors or weakref callbacks. + Code executed during the shutdown phase can encounter various + exceptions as the resources it relies on may not function anymore + (common examples are library modules or the warnings machinery). + + The main reason for interpreter shutdown is that the ``__main__`` module + or the script being run has finished executing. + iterable An object capable of returning its members one at a time. Examples of iterables include all sequence types (such as :class:`list`, :class:`str`, diff --git a/Doc/library/gc.rst b/Doc/library/gc.rst index 8135542..d11c2e1 100644 --- a/Doc/library/gc.rst +++ b/Doc/library/gc.rst @@ -186,7 +186,7 @@ values but should not rebind them): added to this list rather than freed. .. versionchanged:: 3.2 - If this list is non-empty at interpreter shutdown, a + If this list is non-empty at :term:`interpreter shutdown`, a :exc:`ResourceWarning` is emitted, which is silent by default. If :const:`DEBUG_UNCOLLECTABLE` is set, in addition all uncollectable objects are printed. @@ -252,8 +252,8 @@ The following constants are provided for use with :func:`set_debug`: to the ``garbage`` list. .. versionchanged:: 3.2 - Also print the contents of the :data:`garbage` list at interpreter - shutdown, if it isn't empty. + Also print the contents of the :data:`garbage` list at + :term:`interpreter shutdown`, if it isn't empty. .. data:: DEBUG_SAVEALL diff --git a/Doc/library/sys.rst b/Doc/library/sys.rst index 3024086..fa125a0 100644 --- a/Doc/library/sys.rst +++ b/Doc/library/sys.rst @@ -718,6 +718,14 @@ always available. value of :func:`intern` around to benefit from it. +.. function:: is_finalizing() + + Return :const:`True` if the Python interpreter is + :term:`shutting down <interpreter shutdown>`, :const:`False` otherwise. + + .. versionadded:: 3.5 + + .. data:: last_type last_value last_traceback diff --git a/Doc/library/weakref.rst b/Doc/library/weakref.rst index cc883b1..2e16077 100644 --- a/Doc/library/weakref.rst +++ b/Doc/library/weakref.rst @@ -258,7 +258,7 @@ These method have the same issues as the and :meth:`keyrefs` method of are called in reverse order of creation. A finalizer will never invoke its callback during the later part of - the interpreter shutdown when module globals are liable to have + the :term:`interpreter shutdown` when module globals are liable to have been replaced by :const:`None`. .. method:: __call__() @@ -527,8 +527,8 @@ follows:: Starting with Python 3.4, :meth:`__del__` methods no longer prevent reference cycles from being garbage collected, and module globals are -no longer forced to :const:`None` during interpreter shutdown. So this -code should work without any issues on CPython. +no longer forced to :const:`None` during :term:`interpreter shutdown`. +So this code should work without any issues on CPython. However, handling of :meth:`__del__` methods is notoriously implementation specific, since it depends on internal details of the interpreter's garbage |