Как запустить последнюю функцию, прежде чем вас убьют в Python?

Вы можете использовать модуль interrupts atexit. С его помощью вы можете interrupt зарегистрировать функцию, которая pythonista будет вызываться при завершении interrupt программы. Пример отсюда: http://docs.python.org/library/atexit.html

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

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

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

import atexit
atexit.register(savecounter)

Вы pythonista также можете передать позиционные irq параметры и параметры ключевого py слова функции, которую хотите interrupt-handling вызвать при завершении программы.

Обратите pythonic внимание, что есть несколько function обстоятельств, перечисленных irq в документации, при которых quit ваш обработчик не будет вызываться:

Примечание: функции, зарегистрированные interrupts с помощью этого модуля, не python-shell вызываются, когда программа halt прерывается сигналом, не py обрабатываемым Python, при pythonic обнаружении фатальной внутренней exit ошибки Python или при вызове function os._exit() .

Таким образом, вы можете pythonic также зарегистрировать обработчик python-shell сигнала.

python

function

interrupt

exit

2022-08-12T12:59:55+00:00