1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Wed Aug 22 15:56:19 2018
  4.  
  5. @author: Administrator
  6. """
  7.  
  8. # 在python3下测试
  9. import requests
  10. import threading
  11. import datetime
  12.  
  13. count =0;
  14. def Handler(start, end, url, filename):
  15.  
  16. #headers = {'Range': 'bytes=%d-%d' % (start, end-1)}
  17. #r = requests.get(url, headers=headers, stream=True)
  18. for i in filename[start:end]:
  19. global count
  20. r = requests.get("https://youku.cdn2-youku.com/20180701/12972_72ec5f94/1000k/hls/"+i.replace("\n",""),stream=True)
  21. #r = requests.get(url)
  22. with open("ts/"+i.replace("\n",""), "wb") as code:
  23. code.write(r.content)
  24. count =count+1
  25. print("下载进度:%.2f" % (count/len(filename)))
  26.  
  27. def download_file(url, num_thread = 100):
  28. f = open('index.m3u8', 'r', encoding='utf-8')
  29. text_list = f.readlines()
  30. s_list = []
  31. for i in text_list:
  32. if i.find('#EX')==-1:
  33. s_list.append(i)
  34.  
  35. f.close()
  36. file_size = len(s_list)
  37.  
  38. # 启动多线程写文件
  39. part = file_size // num_thread # 如果不能整除,最后一块应该多几个字节
  40. for i in range(num_thread):
  41. start = part * i
  42. if i == num_thread - 1: # 最后一块
  43. end = file_size
  44. else:
  45. end = start + part
  46.  
  47. t = threading.Thread(target=Handler, kwargs={'start': start, 'end': end, 'url': url, 'filename': s_list})
  48. t.setDaemon(True)
  49. t.start()
  50.  
  51. # 等待所有线程下载完成
  52. main_thread = threading.current_thread()
  53. for t in threading.enumerate():
  54. if t is main_thread:
  55. continue
  56. t.join()
  57. #print('%s 下载完成' % file_name)
  58.  
  59. if __name__ == '__main__':
  60. url ="https://youku.cdn2-youku.com/20180701/12972_72ec5f94/1000k/hls/";
  61. start = datetime.datetime.now().replace(microsecond=0)
  62. download_file(url)
  63. end = datetime.datetime.now().replace(microsecond=0)
  64. print("用时: ", end='')
  65. print(end-start)

python多线程下载ts文件的更多相关文章

  1. JAVA多线程下载网络文件

    JAVA多线程下载网络文件,开启多个线程,同时下载网络文件.   源码如下:(点击下载 MultiThreadDownload.java) import java.io.InputStream; im ...

  2. Python3 根据m3u8下载视频,批量下载ts文件并且合并

    Python3 根据m3u8下载视频,批量下载ts文件并且合并 m3u8是苹果公司推出一种视频播放标准,是一种文件检索格式,将视频切割成一小段一小段的ts格式的视频文件,然后存在服务器中(现在为了减少 ...

  3. Android 开发工具类 27_多线程下载大文件

    多线程下载大文件时序图 FileDownloader.java package com.wangjialin.internet.service.downloader; import java.io.F ...

  4. C#多线程下载一个文件

    这里只是说明多线程下载的理论基础,嘿嘿,并没有写多线程下载的代码,标题党了,但是我相信,看完这个代码就应该能够多线程的方式去下载一个文件了. 多线程下载是需要服务器支持的,这里并没有判断服务器不支持的 ...

  5. Android多线程下载大文件解析

    1.多线程介绍 用过迅雷的同学都知道.迅雷有个功能叫做多线程.另一个叫离线下载,我们这里重点介绍一下多线程下载.多线程,顾名思义就是非常多歌线程同一时候在执行,为什么要提出多线程这个概念呢?由于有时候 ...

  6. 【python】下载网络文件到本地

    # 下载网络图片文件到本地 import urllib.request rsp=urllib.request.urlopen("http://n.sinaimg.cn/ent/transfo ...

  7. python合并大量ts文件成mp4格式(ps:上限是450,亲测)

    import os #exec_str = r'copy /b ts/c9645620628078.ts+ts/c9645620628079.ts ts/1.ts' #os.system(exec_s ...

  8. python多线程下载文件

    从文件中读取图片url和名称,将url中的文件下载下来.文件中每一行包含一个url和文件名,用制表符隔开. 1.使用requests请求url并下载文件 def download(img_url, i ...

  9. python 多线程拷贝单个文件

    # -*- coding: utf-8 -*- # @author: Tele # @Time : 2019/04/04 下午 12:25 # 多线程方式拷贝单个文件 import threading ...

随机推荐

  1. Django框架-模板层

    Django框架-模板层 一.模板语法传值 1.验证是否python所有的数据类型都可以传递到前端 locals()的妙用:该方法虽然好用,但是在某些情况下会造成资源的浪费 结论:整型.浮点型.字符串 ...

  2. 优酷1080p的kux格式文件怎么转换为MP4格式?

    直接使用优酷自己的FFMPEG解码! 格式为:"优酷ffmpeg.exe的安装地址" -y -i ".kux文件储存地址" -c:v copy -c:a cop ...

  3. rabbitmq - 简单认识

    1. 概述 与 rabbitmq 做交互 amqp 最著名的实现 与 jms 最明显的区别 消息 不是去找 queue 而是去找 exchange 2. rabbitmq 基本组件 sender 发送 ...

  4. 忽视自身问题并“积极甩锅”,新氧CEO金星还要脸吗?

    编辑 | 于斌 出品 | 于见(mpyujian) "互联网医美第一股"新氧果然还是爆雷了. 说"果然"是因为于见曾经针对新氧目前的商业模式进行过分析,认为以新 ...

  5. 传奇脚本中 SendMsg 编号说明

    0 1 2 3 4 5 60对全服人说1.发送普通红色广播信息. 2.发送普通红色广播信息,并显示NPC名称. 3.发送普通红色广播信息,并人物NPC名称. 4.在NPC头顶,显示普通说话信息. 5. ...

  6. Python中,关于调用带参函数,一些需要注意的问题(监听时)

    1.如果监听调用的函数不带参数(start()) Button.clicked.connect(start)) def strat(): ... 2.如果监听调用的函数带参数(start(x,y)) ...

  7. 第二次写linux驱动总结

    第一次写驱动是在去年,2019年十月份左右.当时是看着韦老师的视频一步步完成的.其中经历了很多error.搭建环境花费了很多精力.时间来到了2020年2月19日星期三,韦老师新视频出来了,我跟着再来了 ...

  8. 刷题5. Longest Palindromic Substring

    一.题目说明 Longest Palindromic Substring,求字符串中的最长的回文. Difficuty是Medium 二.我的实现 经过前面4个题目,我对边界考虑越来越"完善 ...

  9. composer update 或者 composer install提示killed解决办法

    出现此原因大多因为缓存不足造成,在linux环境可增加缓存解决. free -mmkdir -p /var/_swap_cd /var/_swap_#Here, 1M * 2000 ~= 2GB of ...

  10. 6_2 铁轨(UVa514)<栈>

    在一个叫「堆叠市」的城市中有一个有名的火车站.由于地形限制以及经费的关系,火车站及唯一的铁路的样子如下图: 现在火车从A方向来,预定从B方向离开.火车共有N节车厢(N <=1000),并且各车厢 ...