sys.is_finalizing() în Python

Interpretorul (sys) Python 3.5+

Spune dacă interpretorul este pe cale să se oprească.

Sintaxă
sys.is_finalizing()

Ce face sys.is_finalizing()

is_finalizing() returnează True în timpul opririi interpretorului, când modulele sunt deja golite. Este folosită în metodele __del__ sau în funcții de curățare, ca să nu încerce operații care ar eșua în acel moment (de exemplu importuri sau scrieri în jurnal).

Ce returnează

True sau False.

Exemple

Exemplul 1: În timpul rulării normale

Funcțiile înregistrate cu atexit rulează înainte de finalizarea propriu-zisă, deci și acolo rezultatul este False.

import sys, atexit
print(sys.is_finalizing())
atexit.register(lambda: print("atexit, finalizare:", sys.is_finalizing()))

Rezultat

False
atexit, finalizare: False

Greșeli frecvente

  • Faci operații complexe în __del__ fără să verifici is_finalizing() și primești erori ciudate la închiderea programului.

Comenzi înrudite