下面的程序提供了以下的輸出:爲什麼ftp目錄列表很慢?
Listing directory ftp://ftp.ncbi.nih.gov/pub/geo/DATA/SeriesMatrix
1.1 Mbyte
229.0 s
38 Kbit/s
Downloading file ftp://ftp.ncbi.nih.gov/pub/geo/DATA/SeriesMatrix/GSE30/GSE30_series_matrix.txt.gz
2.3 Mbyte
3.1 s
6221 Kbit/s
爲什麼目錄列表這麼慢與文件下載相比? 有什麼方法可以加快目錄列表?
下面是代碼
from __future__ import division
import ftplib
import time
server = 'ftp.ncbi.nih.gov'
dirPath = '/pub/geo/DATA/SeriesMatrix'
filePath = '/pub/geo/DATA/SeriesMatrix/GSE30/GSE30_series_matrix.txt.gz'
ftp = ftplib.FTP(server)
ftp.login('anonymous', '[email protected]')
print 'Listing directory ftp://' + server + dirPath
fileNames = []
t = time.clock()
ftp.retrlines('NLST ' + dirPath, fileNames.append)
t = time.clock() - t
size = sum([len(fileName) + 1 for fileName in fileNames])
print '{0:.1f} Mbyte\n{1:.1f} s\n{2:.0f} Kbit/s'.format(size/2**20, t, 8 * size/2**10/t)
print '\nDownloading file ftp://' + server + filePath
blocks = []
t = time.clock()
ftp.retrbinary('RETR ' + filePath, blocks.append)
t = time.clock() - t
size = sum([len(block) for block in blocks])
print '{0:.1f} Mbyte\n{1:.1f} s\n{2:.0f} Kbit/s'.format(size/2**20, t, 8 * size/2**10/t)
print
raw_input("Press Return to continue")
相反?今天學到了一個新詞。喜歡。 – 2012-07-11 12:46:04
我也是。 ;)(給予好評) – inVader 2012-07-11 12:47:33
「‘反之,’續兩件事物,「如果是這樣,它可能;而如果是這樣,這將是,但因爲它不是,它是不是這就是邏輯。」 - 來自劉易斯卡羅爾的「透過鏡子」。 – user763305 2012-07-11 12:57:09