Я часто вижу в коде Python GDAL, что люди закрывают наборы данных в конце своего скрипта. Почему имеет смысл закрывать набор данных в Python GDAL? Есть ли последствия, если я не сделаю это?
import gdal
# open dataset
ds = gdal.Open('test.tif')
# close dataset
ds = None
Ответы:
Я не думаю, что это имеет какое-либо назначение в конце скрипта, так как сборщик мусора Python будет делать то же самое автоматически при выходе из скрипта. Возможно, вы захотите сделать это в середине вашего скрипта, чтобы восстановить ресурсы, удерживаемые путем доступа к набору данных, снять блокировки файлов и т. Д., Чтобы вы могли использовать их повторно.
del ds
должен иметь тот же эффект, но более ясен в отношении его намерений.Более Pythonic подход будет использовать
with
оператор , но GDAL / OGR не реализует его. Тем не менее, есть некоторые оболочки GDAL / OGR, такие как Rasterio и Fiona .источник
f = open(filename)
и закрываете один с помощьюf.close()
. Неdel f
илиf = None
. Почему? Потому что то, что происходит с объектами после того, как на них больше нет ссылок, является подробностью реализации интерпретатора, и потому что явное лучше, чем неявное ( python.org/dev/peps/pep-0020 ).GDALClose()
метод, который следует вызывать, если вы хотите быть явным (я вижу, что Растерио вызывает это внутренне ).GDALClose()
не реализовано, но установка набора данных вNone
(то естьds = None
) эквивалентна.