国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python 多線程將大文件分開下載后在合并的實例

2020-01-04 14:06:29
字體:
來源:轉載
供稿:網友

廢話不多說了,上代碼吧:

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/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 多線程將大文件分開下載后在合并的實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到python教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 溆浦县| 张家口市| 剑河县| 马公市| 霍城县| 马公市| 马边| 余姚市| 新安县| 岳普湖县| 安丘市| 河津市| 呈贡县| 崇明县| 都昌县| 博客| 兰溪市| 东平县| 临颍县| 潼南县| 嘉黎县| 凭祥市| 景德镇市| 章丘市| 台中县| 湖南省| 军事| 湘潭市| 肃南| 余姚市| 武宁县| 龙井市| 日土县| 呼伦贝尔市| 上虞市| 台安县| 林口县| 虹口区| 汕尾市| 连云港市| 连城县|