python生成器/yield协程/gevent写简单的图片下载器功能示例


Posted in Python onOctober 28, 2019

本文实例讲述了python生成器/yield协程/gevent写简单的图片下载器功能。分享给大家供大家参考,具体如下:

1、生成器:

'''第二种生成器'''
# 函数只有有yield存在就是生成器
def test(i):
  while True:
    i += 1
    res = yield i
    print(res)
    i += 1
  return res
def main():
  t = test(1) # 创建生成器对象
  print(next(t)) # next第一次执行从上到下,yield是终点
  print(next(t))
  print(t.send(5))
if __name__ == '__main__':
  main()

运行结果:

2
None
4
5
6

2、yield协程demo:

def run1():
  while True:
    print('run1____')
    yield
def run2():
  while True:
    print('run2____')
    yield
def main():
  while True:
    next(run1())
    next(run2())
if __name__ == '__main__':
  main()

3、gevent写简单的下载图片

import gevent
import requests,lxml
# from gevent import monkey
# monkey.patch_all()
def get_pic(url, list):
  headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36'
  }
  response = requests.get(url, headers=headers)
  with open('./pic/'+str(list.pop(0)) + '.png', 'wb') as f:
    f.write(response.content)
def get_pic_name_list():
def main():
  get_pic_name_list()
  list = [x for x in range(9999)]
  gevent.joinall([
    gevent.spawn(get_pic, 'http://pic8.iqiyipic.com/image/20181008/eb/af/v_116880780_m_601_m11_180_236.jpg', list),
    gevent.spawn(get_pic, 'http://pic6.iqiyipic.com/image/20181004/a2/2b/v_112874372_m_601_m15_180_236.jpg', list)
  ])
if __name__ == '__main__':
  main()

更多关于Python相关内容可查看本站专题:《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

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

Python 相关文章推荐
Python验证码识别的方法
Jul 10 Python
Python实现简单的文件传输与MySQL备份的脚本分享
Jan 03 Python
Python 调用Java实例详解
Jun 02 Python
windows 下python+numpy安装实用教程
Dec 23 Python
python实现银行管理系统
Oct 25 Python
Python for循环与getitem的关系详解
Jan 02 Python
python base64库给用户名或密码加密的流程
Jan 02 Python
python两种注释用法的示例
Oct 09 Python
Python利用imshow制作自定义渐变填充柱状图(colorbar)
Dec 10 Python
虚拟环境及venv和virtualenv的区别说明
Feb 05 Python
python实现高效的遗传算法
Apr 07 Python
Python 中数组和数字相乘时的注意事项说明
May 10 Python
Python SELENIUM上传文件或图片实现过程
Oct 28 #Python
PYTHON实现SIGN签名的过程解析
Oct 28 #Python
Python爬虫使用代理IP的实现
Oct 27 #Python
Python搭建代理IP池实现接口设置与整体调度
Oct 27 #Python
Python搭建代理IP池实现检测IP的方法
Oct 27 #Python
浅析使用Python搭建http服务器
Oct 27 #Python
Python搭建代理IP池实现存储IP的方法
Oct 27 #Python
You might like
《Re:从零开始的异世界生活》剧情体验,手游新作定名
2020/04/09 日漫
PHP Header用于页面跳转要注意的几个问题总结
2008/10/03 PHP
php google或baidu分页代码
2009/11/26 PHP
PHP最常用的2种设计模式工厂模式和单例模式介绍
2012/08/14 PHP
phpmailer在服务器上不能正常发送邮件的解决办法
2014/07/08 PHP
PHP使用array_merge重新排列数组下标的方法
2015/07/22 PHP
服务器端的JavaScript脚本 Node.js 使用入门
2012/03/07 Javascript
jquery 插件学习(二)
2012/08/06 Javascript
select标记美化--JS式插件、后期加载
2013/04/01 Javascript
可兼容IE的获取及设置cookie的jquery.cookie函数方法
2013/09/02 Javascript
javascript教程之不完整的继承(js原型链)
2014/01/13 Javascript
Bootstrap的图片轮播示例代码
2015/08/31 Javascript
javaScript实现可缩放的显示区效果代码
2015/10/26 Javascript
javascript:void(0)点击登录没反应怎么解决
2015/11/13 Javascript
JavaScript模块化开发之SeaJS
2015/12/13 Javascript
AngularJS使用带属性值的ng-app指令实现自定义模块自动加载的方法
2017/01/04 Javascript
Vue.js学习笔记之修饰符详解
2017/07/25 Javascript
js数组实现权重概率分配
2017/09/12 Javascript
Angular2.0/4.0 使用Echarts图表的示例代码
2017/12/07 Javascript
jQuery实现动态添加和删除input框实例代码
2019/03/26 jQuery
Echarts实现多条折线可拖拽效果
2019/12/19 Javascript
[02:18]《我与DAC》之工作人员:为了热爱DOTA2的玩家们
2018/03/28 DOTA
python对指定目录下文件进行批量重命名的方法
2015/04/18 Python
Python中返回字典键的值的values()方法使用
2015/05/22 Python
各个系统下的Python解释器相关安装方法
2015/10/12 Python
Django实现简单分页功能的方法详解
2017/12/05 Python
使用Django2快速开发Web项目的详细步骤
2019/01/06 Python
美国最顶级的精品店之一:Hampden Clothing
2016/12/22 全球购物
英国内衣连锁店:Boux Avenue
2018/01/24 全球购物
abstract 可以和 virtual 一起使用吗?可以和 override 一起使用吗?
2012/10/15 面试题
面料业务员岗位职责
2013/12/26 职场文书
大学生入党积极分子自我评价
2014/09/20 职场文书
创业计划书之家教托管
2019/09/25 职场文书
MySQL表字段时间设置默认值
2021/05/13 MySQL
Promise面试题详解之控制并发
2021/05/14 面试题
python cv2图像质量压缩的算法示例
2021/06/04 Python