Python 2.6 및 urllib를 사용하여 웹에서 이진 파일을 다운로드 (저장)하려고합니다.Python 2.6을 사용하여 웹에서 이진 파일을 저장하는 가장 효율적인 메모리 방법은 무엇입니까?
필자가 알고 있듯이 read(), readline() 및 readlines()는 파일과 유사한 객체를 읽는 3 가지 방법입니다. 바이너리 파일은 실제로 개행 문자로 분리되지 않으므로 read() 및 readlines()는 전체 파일을 메모리로 읽습니다.
임의의 read() 버퍼 크기를 선택하는 것이이 프로세스 동안 메모리 사용을 제한하는 가장 효율적인 방법입니까?
즉이 근무하고 아래로 RAM 사용량을 유지 임의 때문에
내가 읽은 선택했다import urllib
import os
title = 'MyFile'
downloadurl = 'http://somedomain.com/myfile.avi'
webFile = urllib.urlopen(downloadurl)
mydirpath = os.path.join('c:', os.sep,'mydirectory',\
downloadurl.split('/')[-1])
if not os.path.exists(mydirpath):
print "Downloading...%s" % title
localFile = open(mydirpath, 'wb')
data = webFile.read(1000000) #1MB at a time
while data:
localFile.write(data)
data = webFile.read(1000000) #1MB at a time
webFile.close()
localFile.close()
print "Finished downloading: %s" % title
else:
print "%s already exists." % mydirypath
(1000000). 나는 전송 속도가 너무 낮 으면 버퍼가 건조해질 수 있기 때문에 임의의 양을 선택하는 원시 네트워크 버퍼로 작업 중이 었다고 생각한다. 하지만 그것은 urllib이 이미 나를위한 저수준 버퍼링을 처리하고있는 것 같습니다.
이를 염두에두고, 임의의 숫자를 선택하는 것이 좋습니다. 더 좋은 방법이 있습니까?
감사합니다.