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的Scrapy爬虫框架简单学习笔记
Jan 20 Python
Python使用PyCrypto实现AES加密功能示例
May 22 Python
python利用sklearn包编写决策树源代码
Dec 21 Python
浅谈Tensorflow模型的保存与恢复加载
Apr 26 Python
python 多线程中子线程和主线程相互通信方法
Nov 09 Python
Python3对称加密算法AES、DES3实例详解
Dec 06 Python
python可视化实现代码
Jan 15 Python
python 数据提取及拆分的实现代码
Aug 26 Python
python/golang 删除链表中的元素
Sep 14 Python
python openCV自制绘画板
Oct 27 Python
Flask-SocketIO服务端安装及使用代码示例
Nov 26 Python
Python 用户输入和while循环的操作
May 23 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
收音机指标测试方法及仪器
2021/03/01 无线电
使用PHP制作新闻系统的思路
2006/10/09 PHP
PHP中的命名空间相关概念浅析
2015/01/22 PHP
PHP实现简单ajax Loading加载功能示例
2016/12/28 PHP
菜单效果
2006/10/14 Javascript
JQuery.closest(),parent(),parents()寻找父结点
2012/02/17 Javascript
js 去掉空格实例 Trim() LTrim() RTrim()
2014/01/07 Javascript
Egret引擎开发指南之视觉编程
2014/09/03 Javascript
jQuery 局部div刷新和全局刷新方法总结
2016/10/05 Javascript
基于JavaScript实现飘落星星特效
2017/08/10 Javascript
vue-cli webpack 引入swiper的操作方法
2018/09/15 Javascript
微信小程序实现展示评分结果功能
2019/02/15 Javascript
解决vue路由name同名,路由重复的问题
2020/08/05 Javascript
[02:32]DOTA2英雄基础教程 祸乱之源
2013/12/23 DOTA
[06:53]DOTA2每周TOP10 精彩击杀集锦vol.3
2014/06/25 DOTA
解析Mac OS下部署Pyhton的Django框架项目的过程
2016/05/03 Python
Python中进程和线程的区别详解
2017/10/29 Python
Python切片操作实例分析
2018/03/16 Python
python安装模块如何通过setup.py安装(超简单)
2018/05/05 Python
Python中文件的写入读取以及附加文字方法
2019/01/23 Python
Python3实现的简单工资管理系统示例
2019/03/12 Python
如何运行.ipynb文件的图文讲解
2019/06/27 Python
详解Python文件修改的两种方式
2019/08/22 Python
基于python使用tibco ems代码实例
2019/12/20 Python
Python3 读取Word文件方式
2020/02/13 Python
Django+RestFramework API接口及接口文档并返回json数据操作
2020/07/12 Python
PyCharm+PyQt5+QtDesigner配置详解
2020/08/12 Python
Django ModelForm组件原理及用法详解
2020/10/12 Python
英国家居用品和家居装饰品购物网站:Cox & Cox
2019/08/25 全球购物
基层党员对照检查材料
2014/09/24 职场文书
2014年监理工作总结范文
2014/11/17 职场文书
首都博物馆观后感
2015/06/05 职场文书
法人代表资格证明书
2015/06/18 职场文书
高质量“欢迎词”
2019/04/03 职场文书
vue打包时去掉所有的console.log
2022/04/10 Vue.js
详解Android中的TimePickerView(时间选择器)的用法
2022/04/30 Java/Android