Не ждите, чтобы очистить сборку мусора

Тот факт, что сборщик мусора будет очищен, не означает, что вы должны ждать очистки цикла сбора мусора.

В частности, вам не следует ждать, пока сборщик мусора закроет дескрипторы файлов, соединения с базой данных и откроет сетевые соединения.

например:

В следующем коде предполагается, что файл будет закрыт в следующем цикле сборки мусора, если f была последней ссылкой на файл.

 >>> f = open("test.txt")
>>> del f


 

Более явный способ очистки заключается в вызове f.close() . Вы можете сделать это еще более элегантным, то есть, используя with заявлением, также известный как менеджер контекста :

 >>> with open("test.txt") as f:
...     pass
...     # do something with f
>>> #now the f object still exists, but it is closed

 

with утверждением позволяет отступа кода под открытым файлом. Это делает явным и легче видеть, как долго файл остается открытым. Он также всегда закрывает файл, даже если исключение возникает в while блок.