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运行的17个时新手常见错误小结
Aug 07 Python
Python的多态性实例分析
Jul 07 Python
基于python实现的抓取腾讯视频所有电影的爬虫
Apr 22 Python
python中urllib.unquote乱码的原因与解决方法
Apr 24 Python
Python中用psycopg2模块操作PostgreSQL方法
Nov 28 Python
Python线程同步的实现代码
Oct 03 Python
Python采集猫眼两万条数据 对《无名之辈》影评进行分析
Dec 05 Python
在pycharm中使用git版本管理以及同步github的方法
Jan 16 Python
详解Python传入参数的几种方法
May 16 Python
python3 实现函数写文件路径的正确方法
Nov 27 Python
python 解决cv2绘制中文乱码问题
Dec 23 Python
全面介绍python中很常用的单元测试框架unitest
Dec 14 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
PHP开发环境配置(MySQL数据库安装图文教程)
2010/04/28 PHP
删除html标签得到纯文本可处理嵌套的标签
2014/04/28 PHP
PHP PDOStatement::getColumnMeta讲解
2019/02/01 PHP
PHP标准库(PHP SPL)详解
2019/03/16 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
2020/04/04 PHP
鼠标选择动态改变网页背景颜色的JS代码
2013/12/10 Javascript
js的hasownproperty使用示例
2014/03/02 Javascript
JavaScript多并发问题如何处理
2015/10/28 Javascript
如何根据百度地图计算出两地之间的驾驶距离(两种语言js和C#)
2015/10/29 Javascript
AngularJS实现元素显示和隐藏的几个案例
2015/12/09 Javascript
jQuery遍历json的方法分析
2016/04/16 Javascript
jquery层级选择器的实现(匹配后代元素div)
2016/09/05 Javascript
Node.js 中使用 async 函数的方法
2017/11/20 Javascript
详解基于electron制作一个node压缩图片的桌面应用
2019/01/29 Javascript
详解微信小程序之提高应用速度小技巧
2020/01/07 Javascript
微信小程序自定义弹出模态框禁止底部滚动功能
2020/03/09 Javascript
javascript 内存模型实例详解
2020/04/18 Javascript
JavaScript获取时区实现过程解析
2020/09/24 Javascript
[11:44]Ti9 OG夺冠时刻
2019/08/25 DOTA
使用python解析xml成对应的html示例分享
2014/04/02 Python
Python找出9个连续的空闲端口
2016/02/01 Python
Python实现字符串格式化输出的方法详解
2017/09/20 Python
Python切片操作实例分析
2018/03/16 Python
Python将多个list合并为1个list的方法
2018/06/27 Python
详解python中的线程与线程池
2019/05/10 Python
Python函数和模块的使用总结
2019/05/20 Python
解决Atom安装Hydrogen无法运行python3的问题
2019/08/28 Python
Python drop方法删除列之inplace参数实例
2020/06/27 Python
非常漂亮的CSS3百叶窗焦点图动画
2016/02/24 HTML / CSS
HTML5标签嵌套规则详解【必看】
2016/04/26 HTML / CSS
世界上最大的艺术和工艺用品商店:MisterArt.com
2018/07/13 全球购物
公司前台辞职报告
2014/01/19 职场文书
市场营销管理制度
2014/01/29 职场文书
优秀党员先进材料
2014/12/18 职场文书
2015年学生管理工作总结
2015/05/26 职场文书
导游词之徐州-云龙山
2019/09/29 职场文书