香港云主机最佳企业级服务商!

ADSL拨号VPS包含了中国大陆(联通,移动,电信,)

中国香港,国外拨号VPS。

当前位置:云主机 > python >

电信ADSL拨号VPS
联通ADSL拨号VPS
移动ADSL拨号VPS

python 多线程将大文件分开下载后在合并的实例


时间:2022-02-08 17:49 作者:admin


废话不多说了,上代码吧:

import threadingimport requestsimport timeimport osclass Mythread(threading.Thread):  def __init__(self,url,startpos,endpos,f):    super(Mythread,self).__init__()    self.url=url    self.startpos=startpos    self.endpos=endpos    self.fd=f  def download(self):    print('start thread:%s at %s'%(self.getName(),time.time()))    headers={'Range':'bytes=%s-%s'%(self.startpos,self.endpos)}    res=requests.get(self.url,headers=headers)    self.fd.seek(self.startpos)    self.fd.write(res.content)    print('Stop thread:%s at%s'%(self.getName(),time.time()))    self.fd.close()  def run(self):    self.download()if __name__=="__main__":  url='http://www.wendangxiazai.com/word/b-cfbdc77931b765ce050814a9-1.doc'  filename=url.split('/')[-1]  filesize=int(requests.head(url).headers['Content-Length'])  print('%s filesize:%s'%(filename,filesize))  threadnum=3  threading.BoundedSemaphore(threadnum)#允许线程个数  step=filesize//threadnum  mtd_list=[]  start=0  end=-1    tempf = open('E:\python/' target='_blank'>python\py\web'+filename,'w')  tempf.close()  mtd_list=[]  with open('E:\Python\py\web'+filename,'rb+')as f:    #获得文件句柄    fileno=f.fileno()#返回一个整型的文件描述符,可用于底层操作系统的 I/O 操作    while end<filesize-1:      start=end+1      end=start+step-1      if end>filesize:        end=filesize      print ('Start:%s,end:%s'%(start,end))      dup=os.dup(fileno)#复制文件句柄      fd=os.fdopen(dup,'rb+',-1)      t=Mythread(url,start,end,fd)      t.start()      mtd_list.append(t)    for i in mtd_list:      i.join()  f.close()

以上这篇python 多线程将大文件分开下载后在合并的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

(责任编辑:admin)






帮助中心
会员注册
找回密码
新闻中心
快捷通道
域名登录面板
虚机登录面板
云主机登录面板
关于我们
关于我们
联系我们
联系方式

售前咨询:17830004266(重庆移动)

企业QQ:383546523

《中华人民共和国工业和信息化部》 编号:ICP备00012341号

Copyright © 2002 -2018 香港云主机 版权所有
声明:香港云主机品牌标志、品牌吉祥物均已注册商标,版权所有,窃用必究

云官方微信

在线客服

  • 企业QQ: 点击这里给我发消息
  • 技术支持:383546523

  • 公司总台电话:17830004266(重庆移动)
  • 售前咨询热线:17830004266(重庆移动)