Python多线程下载文件

今天把刚学python时收藏的几篇多线程下载文件的网页看了一下。

实现简单的多线程下载,需要关注如下几点:
1.文件的大小:可以从reponse header中提取,如“Content-Length:911”表示大小是911字节
2.任务拆分:指定各个线程下载的文件的哪一块,可以通过request header中添加“Range: bytes=300-400”(表示下载300~400byte的内容),注意可以请求的文件的range是[0, size-1]字节的。
3.下载文件的聚合:各个线程将自己下载的文件块保存为临时文件,所有线程都完成后,再将这些临时文件按顺序聚合写入到最终的一个文件中。

网上看到一个不错的多线程下载文件的例子,是根据Linux上多线程下载工具axel的思想来写的,源代码在:http://fayaa.com/code/view/58/full/
我将其收录起来,后续需要时可以基于它来修改,示例代码如下:
https://github.com/smilejay/python/blob/master/py2014/paxel.py

参考资料:
添加了https用户名密码验证:http://blog.csdn.net/majianwei86/article/details/6333040
实现了下载平均速度的展示:http://blog.sina.com.cn/s/blog_4ef8be9f0100fe67.html

master

Stay hungry, stay foolish.

One Comment

  1. 这个程序我下载某些zip文件时,会遇到bug的,今后有空再研究Fix bug.

发表评论

邮箱地址不会被公开。 必填项已用*标注

*