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 중국어 홈페이지를 주목해주세요!