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.

  _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

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

No comments:

Post a Comment