从套接字读取和下载速度

时间:2009-10-08 11:16:47

标签: python sockets

为了好玩,我开发了一个下载管理器,我想知道是否通过网络从套接字读取大量数据(即80或100KB)会使下载速度更快,而不是每个读取4KB循环迭代?

(例如,当我用firefox下载文件时,我的平均下载速度是200KBPS)

谢谢,Nir Tayeb。

1 个答案:

答案 0 :(得分:2)

答案是

您的网络传输速率(200kbps)表示缓冲4k或8k或200k几乎没有什么区别。读取之间花费的时间太短。无论如何,瓶颈似乎都是你的转移率。

让我们试试stackoverflow 30.9MB mp3 podcast

  

注意 :这是一个不可靠的黑客,其结果会受到很多影响   因素 - 对示范有用   <仅限目的)

import urllib2
import time

def report(start, size, text):
    total = time.time() - start
    print "%s reading took %d seconds, transfer rate %.2f KBPS" % (
            text, total, (size / 1024.0) / total)

start = time.time()
url = ('http://itc.conversationsnetwork.org/audio/download/'
       'ITC.SO-Episode69-2009.09.29.mp3')
f = urllib2.urlopen(url)
start = time.time()
data = f.read() # read all data in a single, blocking operation
report(start, len(data), 'All data')
f.close()

f = urllib2.urlopen(url)
start = time.time()
while True:
    chunk = f.read(4096) # read a chunk
    if not chunk:
        break
report(start, len(data), 'Chunked')
f.close()

我系统中的结果:

All data reading took 137 seconds, transfer rate 230.46 KBPS
Chunked reading took 137 seconds, transfer rate 230.49 KBPS

因此,对于我的系统,2兆位连接,文件大小,服务器选择,如果我使用chunked阅读,它没有多大区别。