atexit --- 프로세서 종료 (python = 3.7.5)

5552 단어 PythonPackagePYTHON
atexit 모듈 은 청소 함수 의 등록 과 반 등록 함 수 를 정의 합 니 다. 등 록 된 함 수 는 해석 기 가 정상적으로 종 료 될 때 실 행 됩 니 다. atexit 는 등록 순서의 역순 으로 실 행 됩 니 다.A, B, C 를 등록 하면 해석 기 가 종 료 될 때 C, B, A 를 순서대로 실행 합 니 다.
메모: 이 모듈 에 등 록 된 함 수 는 프로그램 이 Python 에 포착 되 지 않 은 신호 에 의 해 죽 었 을 때 실행 되 지 않 습 니 다. Python 내부 의 치 명 적 인 오류 가 감지 되 고 os. 호출 되 었 습 니 다.exit () 시 에 도 실행 되 지 않 습 니 다.
3.7 버 전 변경: C - API 서브 해석 기 에 맞 춰 사용 할 때 등 록 된 함 수 는 등 록 된 해석 기의 부분 대상 입 니 다.
atexit.register(func, *args, **kwargs)
  func            .      func                 register().               .

          (    ,      sys.exit()            ),                     .                         ,         .

    exit              ,         (       SystemExit)           。     exit             ,                。

       func   ,           。

atexit.unregister(func)
                   func。     unregister()   ,           func      ,        。    func        ,unregister()           。

atexit 예제
다음 간단 한 예 는 모듈 이 가 져 올 때 파일 에서 계수 기 를 초기 화하 고 프로그램 이 끝 날 때 카운터 의 업데이트 값 을 자동 으로 저장 하 는 방법 을 보 여 줍 니 다. 이 동작 은 끝 날 때 이 모듈 을 명시 적 으로 호출 하 는 데 의존 하지 않 습 니 다.
try:
    with open("counterfile") as infile:
        _count = int(infile.read())
except FileNotFoundError:
    _count = 0

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

def savecounter():
    with open("counterfile", "w") as outfile:
        outfile.write("%d" % _count)

import atexit
atexit.register(savecounter)

호출 된 등록 함수 에 전달 할 수 있 도록 위치 와 키워드 인자 도 register () 에 들 어 갈 수 있 습 니 다.
def goodbye(name, adjective):
    print('Goodbye, %s, it was %s to meet you.' % (name, adjective))

import atexit
atexit.register(goodbye, 'Donny', 'nice')

# or:
atexit.register(goodbye, adjective='nice', name='Donny')

decorator 로: 사용:
import atexit

@atexit.register
def goodbye():
    print("You are now leaving the Python sector.")

좋은 웹페이지 즐겨찾기