python基于gevent实现并发下载器代码实例

yipeiwu_com5年前Python基础

这篇文章主要介绍了python基于gevent实现并发下载器代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

并发下载原理

import gevent
from gevent import monkey
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, "https://www.baidu.com"),
    gevent.spawn(my_download, "https://www.cnblogs.com"),
    gevent.spawn(my_download, "https://www.huya.com/")
  
])

运行结果:

GET: https://www.baidu.com
GET: https://www.cnblogs.com
GET: https://www.huya.com/
227 bytes received from https://www.baidu.com.
46411 bytes received from https://www.cnblogs.com.
353563 bytes received from https://www.huya.com/.

实现多张图片同时下载

import gevent
from gevent import monkey
import urllib.request


monkey.patch_all()


def my_download(url, image_path):
  print('GET: %s' % url)
  resp = urllib.request.urlopen(url)
  data = resp.read()
  print('%d bytes received from %s.' % (len(data), url))
  
  with open(image_path, "wb") as f:
    f.write(data)
gevent.joinall([
  gevent.spawn(my_download, "/zb_users/upload/202003/2cdcuskagnz.jpg", "1.jpg"),
  gevent.spawn(my_download, "/zb_users/upload/202003/apzvetxpnkr.jpg", "2.jpg"), 
  gevent.spawn(my_download, "/zb_users/upload/202003/j5xop3g4v3x.jpg", "3.jpg"),
])

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

详解Python3迁移接口变化采坑记

1、除法相关 在python3之前, print 13/4 #result=3 然而在这之后,却变了! print(13 / 4) #result=3.25 "/”符号运算...

python脚本实现xls(xlsx)转成csv

# xls_csv 把xls,xlsx格式的文档转换成csv格式 # 使用 python xls2csv.py <xls or xlsx file path> # -*-...

python实现根据文件关键字进行切分为多个文件的示例

来源:在工作过程中,需要统计一些trace信息,也就是一些打点信息,而打点是通过关键字进行的,因此对一个很大的文件进行分析时,想把两个打点之间的内容单独拷贝出来进行分析。 #!/us...

Python中Subprocess的不同函数解析

以前我一直用os.system()处理一些系统管理任务,因为我认为那是运行linux命令最简单的方式. 我们能从Python官方文档里读到应该用subprocess 模块来运行系统命令....

Python操作MySQL数据库的方法

pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同。 下载安装 pip3 install pymysql 使用操作 1、执行SQL i...