atexit Module Complexity¶
The atexit module registers functions to run when the interpreter terminates
normally. Handlers run in last-in, first-out (LIFO) order.
Complexity Reference¶
| Operation | Time | Space | Notes |
|---|---|---|---|
atexit.register() |
O(1) | O(1) | Append handler to stack |
atexit.unregister() |
O(n) | O(1) | n = registered handlers; removes all matches |
| Handler execution | O(n) | O(1) | n = registered handlers; LIFO order |
When handlers run
Handlers run only on normal interpreter shutdown (e.g., program end or
sys.exit()). They do not run on os._exit() or hard termination signals.
Registering Cleanup Handlers¶
import atexit
# Register handler - O(1)
@atexit.register
def cleanup():
print("Cleaning up")
Handler Order (LIFO)¶
import atexit
@atexit.register
def first():
print("first")
@atexit.register
def second():
print("second")
# On shutdown:
# second
# first
Unregistering Handlers¶
import atexit
def temp():
pass
atexit.register(temp)
atexit.unregister(temp) # O(n) scan to remove all matches