博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
练习PYTHON之EVENTLET
阅读量:6829 次
发布时间:2019-06-26

本文共 1166 字,大约阅读时间需要 3 分钟。

以下是重点,要会运用:

eventlet是一个用来处理和网络相关的python库函数,而且可以通过协程来实现并发,在eventlet里,把“协程”叫做 greenthread(绿色线程)。所谓并发,就是开启了多个greenthread,并且对这些greenthread进行管理,以实现非阻塞式的 I/O。比如说用eventlet可以很方便的写一个性能很好的web服务器,或者是一个效率很高的网页爬虫,这都归功于eventlet的“绿色线程”,以及对“绿色线程”的管理机制。更让人不可思议的是,eventlet为了实现“绿色线程”,竟然对python的和网络相关的几个标准库函数进行了改写,并且可以以补丁(patch)的方式导入到程序中,因为python的库函数只支持普通的线程,而不支持协程,eventlet称之为“绿化”。

它通过greenlet提供的协程功能,让开发者可以不用将以往的多线程等并发程序的开发方式转变成异步状态机模型,就能直接使用select/epoll/kqueue等操作系统提供的支持高并发IO接口,并且能尽可能地发挥它们在并发上的优势。

与它同类的另一款产品是Gevent,它们有着很类似的设计。

在CPython下,由于Gevent使用了Cython绑定了libev或者libevent等C库,导致Gevent比eventlet有着更优秀的性能。

但是也因为Cython写的部分组件,导致Gevent无法借助PyPy来给它加速,而eventlet则没有这个限制。在PyPy的加速下,eventlet的性能可以有成倍的提升。

 

urls = [    "http://images2015.cnblogs.com/blog/465438/201511/465438-20151118221619921-967751972.png",    "http://images2015.cnblogs.com/blog/465438/201511/465438-20151118160713436-1672394517.png",    "http://images2015.cnblogs.com/blog/465438/201511/465438-20151118160722233-314107087.png",]import eventletfrom eventlet.green import urllib2def fetch(url):    return urllib2.urlopen(url).read()pool = eventlet.GreenPool()for body in pool.imap(fetch, urls):    print("got body", len(body))

  

转载地址:http://cxjkl.baihongyu.com/

你可能感兴趣的文章
Kubernetes 学习笔记(二)--- K8S应用快速入门
查看>>
MFC读写EXIF信息,图片非占用
查看>>
mysql进阶(六)
查看>>
聊聊设计模式之策略模式
查看>>
redis3.2启动配置文件redis.conf说明
查看>>
阿里云建站严选
查看>>
bboss分布式事件框架介绍文档
查看>>
基于Element-admin-ui开发后台管理系统
查看>>
2.[Andriod]Andriod Studio结合Visual Studio Emulator for Android调试Android App
查看>>
改变世界前,先改变自己
查看>>
《React Native 精解与实战》书籍连载「Node.js 简介与 React Native 开发环境配置」...
查看>>
Java_异常_01_org.apache.commons.lang.exception.NestableRuntimeException
查看>>
1-AIV--使用ContentProvider获取短信
查看>>
前端优化系列 - 前端优化的思考
查看>>
火爆GitHub:100天搞定机器学习编程(超赞信息图+代码+数据集)
查看>>
TongDXP
查看>>
Python进阶-算法-插入排序
查看>>
C# 如何添加水印到PPT
查看>>
北京朝阳区第二批重点产业发展引导资金项目即将开始征集
查看>>
微信小程序开发系列五:微信小程序中如何响应用户输入事件
查看>>