【python实战】多线程下载文件

举报
一条coding 发表于 2021/10/19 00:44:29 2021/10/19
【摘要】  点赞再看,养成好习惯 哈喽,大家好,我是一条。 相信大家都遇到过下载文件过慢的时候,今天教大家多线程下载,快到飞起。 1.实现原理 根据url后利用request库获得数据,保存到文件。 将文件分成若干部分,由若干线程分别去下载,再按顺序将文件拼接到一起。 2.实现思路 1.获取文件大小 ...

 点赞再看,养成好习惯

哈喽,大家好,我是一条。

相信大家都遇到过下载文件过慢的时候,今天教大家多线程下载,快到飞起。

1.实现原理

  • 根据url后利用request库获得数据,保存到文件。
  • 将文件分成若干部分,由若干线程分别去下载,再按顺序将文件拼接到一起。

2.实现思路

1.获取文件大小

根据url获得请求头后发现是一个json串,格式化后找到大小


  
  1. res=requests.head(url)
  2. size = int(res.headers['Content-Length'])

2.分割文件


  
  1. n=5
  2. spos = []
  3. fpos = []
  4. persize=size//n #每一份的大小
  5. intsize=persize*n #整份的大小
  6. for i in range(0,intsize,persize):
  7. spos.append(i) #每一段的初值
  8. fpos.append(i+persize-1) #每一段的终值
  9. if(intsize<size):
  10. fpos[n-1]=size #不能整除的剩余部分

3.下载并写入文件

文章来源: blog.csdn.net,作者:一条coding,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/skylibiao/article/details/115470878

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。