From b817faa4ce2e975da009d35493146929f4024308 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Charles-Fran=C3=A7ois=20Natali?= Date: Wed, 21 Aug 2013 18:25:00 +0200 Subject: [PATCH] Issue #15233: Python now guarantees that callables registered with the atexit module will be called in a deterministic order. --- Doc/library/atexit.rst | 15 ++++++++------- Misc/NEWS | 3 +++ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/Doc/library/atexit.rst b/Doc/library/atexit.rst index 37d8d500ef1d..0b5e121fe630 100644 --- a/Doc/library/atexit.rst +++ b/Doc/library/atexit.rst @@ -15,13 +15,14 @@ The :mod:`atexit` module defines a single function to register cleanup functions. Functions thus registered are automatically executed upon normal -interpreter termination. The order in which the functions are called is not -defined; if you have cleanup operations that depend on each other, you should -wrap them in a function and register that one. This keeps :mod:`atexit` simple. - -Note: the functions registered via this module are not called when the program -is killed by a signal not handled by Python, when a Python fatal internal error -is detected, or when :func:`os._exit` is called. +interpreter termination. :mod:`atexit` runs these functions in the *reverse* +order in which they were registered; if you register ``A``, ``B``, and ``C``, +at interpreter termination time they will be run in the order ``C``, ``B``, +``A``. + +**Note:** The functions registered via this module are not called when the +program is killed by a signal not handled by Python, when a Python fatal +internal error is detected, or when :func:`os._exit` is called. .. index:: single: exitfunc (in sys) diff --git a/Misc/NEWS b/Misc/NEWS index 04317f839993..83b5116dc414 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -32,6 +32,9 @@ Core and Builtins Library ------- +- Issue #15233: Python now guarantees that callables registered with the atexit + module will be called in a deterministic order. + - Issue #18747: Re-seed OpenSSL's pseudo-random number generator after fork. A pthread_atfork() child handler is used to seeded the PRNG with pid, time and some stack data. -- 2.47.3