如何使用请求python库确定要下载的块大小

时间:2015-09-30 11:37:02

标签: python multithreading download

我有一个简单的脚本,可以使用请求库从python中的远程服务器下载大小为300MB的文件。我正在考虑使用线程模块和队列模块减少下载时间,并且我正在尝试弄清楚如何使用这些模块

我考虑过拥有4个线程并将文件大小分成四个块和每个线程。我的请求下载代码现在看起来像这样。

import threading
import Queue
import requests

queue = Queue.Queue()

class downloadThread(threading.Thread):

  def __init__(self,queue):
      self.inQueue = queue

  def run():
      while True:
           url = self.inQueue.get()
           resp = requests.get(url,stream=True)

           with open('/tmp/app.zip','wb') as f:
                for chunk in resp.iter_contents(chunk_size=1024):
                     if chunk:
                          f.write(chunk)
                          f.flush()

if __name__ == '__main__':

     for x in range(3):
       t = downloadThread(queue)
       t.setDaemon(True)
       t.start()

 queue.put(http://urltofile')

当使用iter_contents检索内容时,我可以提供chunk_size但是有没有办法提到从1024开始并处理块直到2048?由于我打算使用线程1下载0到1024而线程2用来处理1025到2048等等。

我必须处理以不同逻辑编写文件。我打算将块读入另一个队列和inQueue,然后将它们写入文件。截至目前,我正在试图弄清楚如何在线程之间拆分文件块。

由于

0 个答案:

没有答案