>  기사  >  백엔드 개발  >  Python의 atexit 모듈에 대한 심층적 이해

Python의 atexit 모듈에 대한 심층적 이해

高洛峰
高洛峰원래의
2017-03-08 09:21:011128검색

atexit 모듈은 프로그램이 종료될 때 콜백 함수를 등록하는 등록 함수만 정의합니다. 이 콜백 함수에서 일부 리소스 정리 작업을 수행할 수 있습니다. 다음 글에서는 Python의 atexit 모듈 관련 정보를 주로 소개합니다. 도움이 필요한 친구들이 참고할 수 있습니다.

atexit 모듈 소개

python atexit 모듈은 python에 종료 함수를 등록하는 데 사용되는 등록 함수를 정의합니다. Interpreter , 이 함수는 인터프리터가 정상적으로 종료될 때 자동으로 실행되며 일반적으로 일부 리소스 정리 작업을 수행하는 데 사용됩니다. atexit는 이러한 함수를 등록된 순서와 반대로 실행합니다. 예를 들어 A, B, C를 등록하고 인터프리터가 종료되면 C, B, A 순서로 실행합니다.

참고: 프로그램이 비정상적으로 종료되거나 os._exit()을 통해 종료되는 경우 등록된 종료 함수가 호출되지 않습니다.

공식 문서: https://docs.python.org/3.5/library/atexit.html

종료 기능 등록

atexit.register(func, *args, **kargs)

종료 시 실행할 함수로 func를 넣어주세요. func에 전달할 선택적 인수는 register()에 인수로 전달되어야 합니다. 동일한 기능과 매개변수를 여러 번 등록할 수 있습니다.

프로그램이 종료되면 등록된 함수가 먼저 들어온 것부터 나중에 나온 것 순으로 호출됩니다. 종료 함수 실행 중에 예외가 발생하면 atexit는 예외 정보를 인쇄하고 모든 종료 함수가 실행될 때까지 다음 콜백을 계속 실행하며 마지막으로 수신된 예외를 다시 발생시킵니다.


데코레이터별:

#!/usr/bin/env python
from atexit import register
def main():
 print('Do something.')
@register
def _atexit():
 print('Done.')
if __name__ == '__main__':
 main()

데코레이터가 아닌 방법:

#!/usr/bin/env python
from atexit import register
def main():
 #pass
 print('XX')
def goodbye(name, adjective):
 print('Goodbye, %s, it was %s to meet you.' % (name, adjective))
 
register(goodbye, 'Donny', 'nice')
# or:
# register(goodbye, adjective='nice', name='Donny')
if __name__ == '__main__':
 main()

종료 기능 삭제 [일반적으로 사용되지 않음]

> atexit.unregister(func)
>

인터프리터가 닫힐 때 실행되는 함수 목록에서 func를 제거합니다. unregister() 호출 후 인터프리터가 종료되면 func를 여러 번 등록해도 호출되지 않습니다. func가 등록되지 않은 경우 unregister()는 아무 작업도 수행하지 않습니다.

파이썬의 atexit 모듈과 관련 글에 대한 더 자세한 이해를 원하시면 PHP 중국어 홈페이지를 주목해주세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.