반응형
Python으로 작성한 py 파일 프로그램이 종료되는 때에 맞추어
특정 함수를 실행시켜보고 싶은 경우가 있습니다.
이 경우에 atexit 라이브러리를 활용하면
정상 종료, 오류로 인한 강제 종료의 경우를 모두 포함하여
원하는 기능을 간단하게 호출할 수 있습니다.
프로그램 종료 시점 함수 호출 기본 예제
만약 프로그램이 종료되는 시점에 exit_print라는 함수를 실행시키고 싶은 경우라면
다음과 같이 atexit 모듈의 register 메소드로 호출을 원하는 함수를 등록시켜주시면 됩니다.
import atexit
import time
def exit_print():
print('프로그램이 종료됩니다!')
atexit.register(exit_print)
for i in range(5):
print(f'남은 시간 : {5-i}초')
time.sleep(1)
먼저, 프로그램이 정상 종료된 경우에는 아래와 같은 출력 메시지가 나타나게 됩니다.
남은 시간 : 5초
남은 시간 : 4초
남은 시간 : 3초
남은 시간 : 2초
남은 시간 : 1초
프로그램이 종료됩니다!
이번에는 실행 도중에 터미널에서 Ctrl + C를 눌러 강제 종료를 시켜보도록 하겠습니다.
이 경우에는 KeyboardInterrupt 오류가 발생하며, 다음과 같이 메시지가 출력됩니다.
남은 시간 : 5초
남은 시간 : 4초
남은 시간 : 3초
Traceback (most recent call last):
File "C:\Users\my_file.py", line 11, in <module>
time.sleep(1)
KeyboardInterrupt
프로그램이 종료됩니다!
두 경우 모두 '프로그램이 종료됩니다!' 메시지가 정상 출력된 것을 확인할 수 있습니다.
반응형
종료 시 호출되는 함수에 argument 추가 방법
atexit의 register 메서드에서는 종료 시 실행될 함수에 input 인자도 포함시킬 수 있습니다.
다음은 argument를 1개 받는 예시입니다. 위의 예제와 결과를 비교해보세요.
import atexit
import time
def exit_print(num):
print('프로그램이 종료됩니다!')
print(f'입력되었던 값은 {num}입니다.')
atexit.register(exit_print, 7) # input 인자 1개를 받는 경우
for i in range(5):
print(f'남은 시간 : {5-i}초')
time.sleep(1)
여기서 출력 결과는 아래와 같이 등장하게 됩니다.
남은 시간 : 5초
남은 시간 : 4초
남은 시간 : 3초
남은 시간 : 2초
남은 시간 : 1초
프로그램이 종료됩니다!
입력되었던 값은 7입니다.
물론, 2개 이상의 argument를 가지는 경우도 아래와 같이 지정할 수 있습니다.
def exit_print(num1, num2):
print('프로그램이 종료됩니다!')
print(f'입력되었던 값은 {num1}과 {num2}입니다.')
atexit.register(exit_print, 7, 10) # input 인자가 2개인 경우
'Python > Utils' 카테고리의 다른 글
파이썬 pipenv 가상 환경 관리 기초(특징 및 명령어 정리) (0) | 2023.10.08 |
---|---|
파이썬 해시 함수 모듈 hashlib 사용법 (0) | 2023.09.23 |
파이썬 특정 시각에 코드를 실행하는 방법(schedule, threading 모듈 활용) (0) | 2023.09.18 |