python ftp检索行 - 性能问题

时间:2011-09-09 15:47:29

标签: python performance ftp

我正在尝试使用python的ftplib模块通过FTP连接从文件中检索行。读取大小为1 GB的文件大约需要10分钟。我想知道是否有其他方法可以更快地读取这些行。

我应该包含一些代码来展示我在做什么:

ftp.HostName = 'xxx'
ftp.Userid = 'xxx' #so on

ftp.conn.retrlines('RETR ' + fileName, process)

2 个答案:

答案 0 :(得分:1)

检索远程资源通常受带宽限制,FTP协议可以很好地使用它。

您确定没有使网络连接饱和吗? (运行ftplib的客户端和从中下载的服务器之间的网络链接是什么?)

信封背面:

1GB / 10mins = ~1.7 MB / sec = ~13 Mbps

所以你以13兆比特的速度下载。对于远程DSL /有线/广域网连接而言,这是一个不错的速度,但如果这是一个本地网络,那么显然相当低。

答案 1 :(得分:0)

您能展示一些您正在做的最小代码示例吗? FTP用于传输文件, 因此,从远程文件中检索行不一定像在整个文件中传输一次并在本地读取它一样有效。

除此之外,您是否验证过,可以在此连接上加快速度?

编辑:如果您尝试以下操作并且速度不快,那么您受操作系统或连接的限制:

ftp.conn.retrbinary('RETR ' + fileName, open(temp_file_name, 'wb').write)

这里的假设是,FTP文本模式可能效率较低(在服务器端),这可能是错误的或微乎其微的相关性。