gpt4 book ai didi

python - 为什么 ftp 目录列表这么慢?

转载 作者:行者123 更新时间:2023-11-28 20:09:13 25 4
gpt4 key购买 nike

下面的程序给出了以下输出:

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', 'john.smith@gmail.com')

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")

最佳答案

因为 FTP 服务器需要很长时间才能将目录的内容收集为人类可读的形式。您可以通过直接与 FTP 服务器交谈来确认这一点。

相反,一个文件的传输不需要服务器端准备,它只是发送文件。

关于python - 为什么 ftp 目录列表这么慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11432790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com