Python / How to execute function before exit

In order to have a chance to take some actions before the Python interpreter exits you can use the atexit Python module.
The atexit module defines a single function to register cleanup functions. Functions thus registered are automatically executed upon normal interpreter termination. 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 os._exit() is called.

The following simple example demonstrates how a module can initialize a counter from a file when it is imported and save the counter’s updated value automatically when the program terminates without relying on the application making an explicit call into this module at termination.

try:
  _count = int(open("counter").read())
except IOError:
  _count = 0

def incrcounter(n):
  global _count
  _count = _count + n

def savecounter():
  open("counter", "w").write("%d" % _count)

import atexit
atexit.register(savecounter) 

The information above is partially taken from the official Python documentation.

No comments:

Post a Comment