Общее правило для того, когда реализовать IDisposable

Еще один, с помощью urlretrieve :

import urllib
urllib.urlretrieve ("http://www.example.com/songs/mp3.mp3", "mp3.mp3")

(для Python 3 + использование import urllib.request и urllib.request.urlretrieve)

еще одно, с "progressbar"

import urllib2

url = "http://download.thinkbroadband.com/10MB.zip"

file_name = url.split('/')[-1]
u = urllib2.urlopen(url)
f = open(file_name, 'wb')
meta = u.info()
file_size = int(meta.getheaders("Content-Length")[0])
print "Downloading: %s Bytes: %s" % (file_name, file_size)

file_size_dl = 0
block_sz = 8192
while True:
    buffer = u.read(block_sz)
    if not buffer:
        break

    file_size_dl += len(buffer)
    f.write(buffer)
    status = r"%10d  [%3.2f%%]" % (file_size_dl, file_size_dl * 100. / file_size)
    status = status + chr(8)*(len(status)+1)
    print status,

f.close()

5
задан Community 23 May 2017 в 10:29
поделиться

5 ответов

Реализуйте IDisposable, если у вас есть класс, который обертывает неуправляемый ресурс, или когда в вашем классе есть поле, реализующее IDisposable.

13
ответ дан 18 December 2019 в 06:51
поделиться

Каждый раз, когда вы выделяете ресурсы, которые должны быть освобождены, такие как файлы, дескрипторы и т. Д. Например, если вы используете ресурсы Win32 (которые не реализуют IDisposable), вы должны реализовать IDisposable, чтобы освободить их .

1
ответ дан 18 December 2019 в 06:51
поделиться

Когда вам нужно освободить неуправляемых ресурсов, реализуйте IDisposable .

5
ответ дан 18 December 2019 в 06:51
поделиться

From MSDN: http://msdn.microsoft.com/en-us/library/system.idisposable.aspx

Use the Dispose method of this interface to explicitly release unmanaged resources in conjunction with the garbage collector. The consumer of an object can call this method when the object is no longer needed.

2
ответ дан 18 December 2019 в 06:51
поделиться

Обычно я использую IDisposable каждый раз, когда мне нужно выполнить очистку элементов. Для меня это происходит при написании кода, который абстрагирует базу данных / сеть / файловые системы.

Он просто отмечает элементы, готовые для сборщика мусора, вместо того, чтобы ждать, пока он попытается сделать это самостоятельно.

1
ответ дан 18 December 2019 в 06:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: