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

 更新时间:2018年11月09日 09:21:28   作者:听雪声的春天  
今天小编就为大家分享一篇python 多线程将大文件分开下载后在合并的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

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

import threading
import requests
import time
import os


class 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 多线程将大文件分开下载后在合并的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 一文带你了解Python中的注释及变量

    一文带你了解Python中的注释及变量

    这篇文章主要给大家介绍了关于Python中注释及变量的相关资料,Python是一门动态类型的语言,因此无须提前声明变量类型,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-07-07
  • 详解如何使用Python在PDF文档中创建动作

    详解如何使用Python在PDF文档中创建动作

    PDF格式因其跨平台兼容性和丰富的功能集而成为许多行业中的首选文件格式,其中,PDF中的动作(Action) 功能尤为突出,本文将介绍如何使用Python在PDF文档中创建动作,需要的朋友可以参考下
    2024-09-09
  • Python PSO算法处理TSP问题详解

    Python PSO算法处理TSP问题详解

    这篇文章主要介绍了Python PSO算法处理TSP问题,PSO粒子群算法是一种基于鸟类觅食开发出来的优化算法,它是从随机解出发,通过迭代寻找最优解,通过适应度来评价解的品质
    2022-11-11
  • 分析Python读取文件时的路径问题

    分析Python读取文件时的路径问题

    本篇文章通过图文实例的方式给大家详细分析了Python读取文件时的路径问题,对此有需求的朋友可以参考学习下。
    2018-02-02
  • Python实现的排列组合、破解密码算法示例

    Python实现的排列组合、破解密码算法示例

    这篇文章主要介绍了Python实现的排列组合、破解密码算法,结合实例形式分析了Python排列组合、密码破解相关数学运算操作技巧,需要的朋友可以参考下
    2019-04-04
  • python中的对数log函数表示及用法

    python中的对数log函数表示及用法

    在本篇文章里小编给大家整理了一篇关于python中的对数log函数表示及用法,有需要的朋友们可以学习下。
    2020-12-12
  • Python3.5面向对象程序设计之类的继承和多态详解

    Python3.5面向对象程序设计之类的继承和多态详解

    这篇文章主要介绍了Python3.5面向对象程序设计之类的继承和多态,结合实例形式详细分析了Python3.5面向对象程序设计中类的继承与多态常见用法及相关注意事项,需要的朋友可以参考下
    2019-04-04
  • NumPy 与 Python 内置列表计算标准差区别详析

    NumPy 与 Python 内置列表计算标准差区别详析

    这篇文章主要介绍了NumPy与Python内置列表计算标准差区别详析,NumPy,是Numerical Python的简称,用于高性能科学计算和数据分析的基础包,更多相关内容需要的朋友可以参考一下
    2022-07-07
  • Python实现定时自动关闭的tkinter窗口方法

    Python实现定时自动关闭的tkinter窗口方法

    今天小编就为大家分享一篇Python实现定时自动关闭的tkinter窗口方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02
  • Python Decorator装饰器的创建方法及常用场景分析

    Python Decorator装饰器的创建方法及常用场景分析

    这篇文章主要介绍了Python Decorator装饰器的创建方法及常用场景,装饰器可以分成方法装饰器和类装饰器,他们的区别是一个是用函数实现的装饰器,一个是用类实现的装饰器,他们也都能在方法和类上进行装饰,需要的朋友可以参考下
    2022-07-07

最新评论