python 并发下载器实现方法示例

作者:小飞侠v科比 时间:2022-03-31 10:46:00 

本文实例讲述了python 并发下载器实现方法。分享给大家供大家参考,具体如下:

并发下载器

并发下载原理


from gevent import monkey
import gevent
import urllib.request
# 有耗时操作时需要
monkey.patch_all()
def my_downLoad(url):
 print('GET: %s' % url)
 resp = urllib.request.urlopen(url)
 data = resp.read()
 print('%d bytes received from %s.' % (len(data), url))
gevent.joinall([
   gevent.spawn(my_downLoad, 'http://www.baidu.com/'),
   gevent.spawn(my_downLoad, 'http://www.itcast.cn/'),
   gevent.spawn(my_downLoad, 'http://www.itheima.com/'),
])

运行结果

GET: http://www.baidu.com/
GET: http://www.itcast.cn/
GET: http://www.itheima.com/
111327 bytes received from http://www.baidu.com/.
172054 bytes received from http://www.itheima.com/.
215035 bytes received from http://www.itcast.cn/.

从上能够看到是先发送的获取baidu的相关信息,然后依次是itcast、itheima,但是收到数据的先后顺序不一定与发送顺序相同,这也就体现出了异步,即不确定什么时候会收到数据,顺序不一定

实现多个视频下载


from gevent import monkey
import gevent
import urllib.request
#有IO才做时需要这一句
monkey.patch_all()
def my_downLoad(file_name, url):
 print('GET: %s' % url)
 resp = urllib.request.urlopen(url)
 data = resp.read()
 with open(file_name, "wb") as f:
   f.write(data)
 print('%d bytes received from %s.' % (len(data), url))
gevent.joinall([
   gevent.spawn(my_downLoad, "1.mp4", 'http://oo52bgdsl.bkt.clouddn.com/05day-08-%E3%80%90%E7%90%86%E8%A7%A3%E3%80%91%E5%87%BD%E6%95%B0%E4%BD%BF%E7%94%A8%E6%80%BB%E7%BB%93%EF%BC%88%E4%B8%80%EF%BC%89.mp4'),
   gevent.spawn(my_downLoad, "2.mp4", 'http://oo52bgdsl.bkt.clouddn.com/05day-03-%E3%80%90%E6%8E%8C%E6%8F%A1%E3%80%91%E6%97%A0%E5%8F%82%E6%95%B0%E6%97%A0%E8%BF%94%E5%9B%9E%E5%80%BC%E5%87%BD%E6%95%B0%E7%9A%84%E5%AE%9A%E4%B9%89%E3%80%81%E8%B0%83%E7%94%A8%28%E4%B8%8B%29.mp4'),
])

上面的url可以换为自己需要下载视频、音乐、图片等网址

希望本文所述对大家Python程序设计有所帮助。

来源:https://blog.csdn.net/kai46385076/article/details/100069559

标签:python,并发下载器
0
投稿

猜你喜欢

  • class类在python中获取金融数据的实例方法

    2021-03-30 10:18:32
  • 基于django ManyToMany 使用的注意事项详解

    2022-10-16 00:29:33
  • Python实现哲学家就餐问题实例代码

    2022-09-20 14:10:49
  • Python+selenium实现趣头条的视频自动上传与发布

    2022-03-23 10:27:43
  • Python语法详解之decorator装饰器

    2021-07-15 23:11:45
  • 微信小程序去哪里找 小程序到底如何使用(附小程序名单)

    2024-05-03 15:07:40
  • SQL Server中的SELECT会阻塞SELECT吗

    2024-01-25 18:08:30
  • pip安装库报错[notice] A new release of pip available: 22.2 -> 22.2.2

    2021-07-15 15:57:04
  • Python迭代器Iterable判断方法解析

    2023-06-11 15:37:19
  • vue 开发一个按钮组件的示例代码

    2024-04-30 10:27:40
  • python解释模型库Shap实现机器学习模型输出可视化

    2022-04-27 08:00:10
  • MYSQL实现连续签到功能断签一天从头开始(sql语句)

    2024-01-22 16:35:11
  • 用Asp修改注册表

    2008-01-04 12:33:00
  • vue自定义过滤器创建和使用方法详解

    2024-05-09 15:17:06
  • WebStorm 遇到的问题总结

    2023-08-31 23:30:00
  • Python入门必须知道的11个知识点

    2023-12-19 05:32:47
  • MySQL8.0无法远程连接访问的解决方法

    2024-01-19 02:55:54
  • Javascript技术栈中的四种依赖注入小结

    2024-04-18 10:54:08
  • 利用Python判断文件的几种方法及其优劣对比

    2022-07-03 06:20:02
  • Python Dataframe常见索引方式详解

    2023-06-21 21:03:25
  • asp之家 网络编程 m.aspxhome.com