计划做这样的多线程下载是因为百度云盘限速厉害,到了恶心的地步,我想试试用多线程下载百度云盘的资源是否能够实现加速。
百度云盘限速分析
1. 关于限速,我揣测有两种情况:限制下载资源的带宽
限制下载资源时的线程或者进程数目
2. 多线程下载的具体思路如下:获取待下载文件的大小 size
将待下载文件分成 n 块,第 i 块大小为 subi ,n 个 subi 之和等于 size
在下载进程中开启 n 个线程,每个线程负责下载一个 sub
所有线程下载的资源按照原有顺序写入文件,完成后,该文件即为下载后的文件
百度云盘多线程加速下载,具体实现如下
1. 获取待下载文件的 size
以下载 python 2.7 为例,下载链接:点我下载,点击该链接时,应该会直接弹出下载窗口。通常,文件大小,文件名等信息都在请求 headers 里,python 可用如下代码获取该文件 headers:
输出结果是一个 json 数据,格式化显示如下:
显然,该文件大小为 19161088 字节。
2. 将下载文件分为 n 个小块
这一步其实就是简单的数学题了,下面直接上代码,以 n=5 等分为例,如下:
输出结果如下:
可见,文件被 5 等分了,因为