Python使用monkey.patch_all()解决协程阻塞问题
作者:cool小伙 发布时间:2021-05-11 17:27:19
标签:Python,monkey,patch,协程
直接参考以下实例,采用协程访问三个网站
由于IO操作非常耗时,程序经常会处于等待状态
比如请求多个网页有时候需要等待,gevent可以自动切换协程
遇到阻塞自动切换协程,程序启动时执行monkey.patch_all()解决
# 由于IO操作非常耗时,程序经常会处于等待状态
# 比如请求多个网页有时候需要等待,gevent可以自动切换协程
# 遇到阻塞自动切换协程,程序启动时执行monkey.patch_all()解决
# 首行添加下面的语句即可
from gevent import monkey; monkey.patch_all()
import gevent
from urllib import request
def run_task(url):
print("Visit --> %s" % url)
try:
response = request.urlopen(url)
data = response.read()
print("%d bytes received from %s." %(len(data), url))
except Exception:
print("error")
if __name__ == '__main__':
urls = ['https://github.com/', 'https://blog.csdn.net/', 'https://bbs.csdn.net/']
# 定义协程方法
greenlets = [gevent.spawn(run_task, url) for url in urls]
# 添加协程任务,并且启动运行
gevent.joinall(greenlets)
# 查看运行结果可以发现,三个协程是同时触发的,但是结束顺序不同
# 网页请求的时间不同,故结束顺序不同
# 但是该程序其实只有一个线程
输出结果
Visit --> https://github.com/
Visit --> https://blog.csdn.net/
Visit --> https://bbs.csdn.net/
bytes received from https://blog.csdn.net/.
bytes received from https://bbs.csdn.net/.
bytes received from https://github.com/.Process finished with exit code 0
来源:https://www.cnblogs.com/xiaozengzeng/p/12687936.html
0
投稿
猜你喜欢
- 前言在我们的日常开发中, 常用的中间件有很多, 今天来讲一下怎么集成限流中间件, 它可以很好地用限制并发访问数来保护系统服务, 避免系统服务
- python 使用get_argument获取url query参数ornado的每个请求处理程序,我们叫做handler,handler里
- 今天碰到一个很有意思的问题,需要将普通的 Unicode字符串转换为 Unicode编码的字符串,如下:将 \\u9500\\u552e 转
- 有四个变量影响磁带备份设备的性能,并使 SQL Server 备份及还原性能操作得以在大体上随添加更多磁带设备而提高线性比例。◆软件数据块大
- str_split不支持中文,利用mb_xx函数实现个/** * Convert a string to an array * @param
- 本文实例讲述了Python显示进度条的方法,是Python程序设计中非常实用的技巧。分享给大家供大家参考。具体方法如下:首先,进度条和一般的
- 当使用MySQL做站点的时候,肯定会有不知道的错误发生,怎么记录呢?以下是具体解决方法:class.method //建立错误日志 func
- LSMT层可以在troch.nn模块中找到LSTM类lstm = torch.nn.LSTM(*paramsters)1、__init__方
- 今天的这篇文章是讲XHTML中的细节部分的,这篇续述的主题就是ID与CLASS怎么用,在标题中有提及使用原则与技巧,这里的使用原则与技巧是我
- 前言写过前端Javascript代码的同学肯定不会对console对象感到陌生,在调试的过程中我们经常会用console对象在控制台输出一些
- 1、引言在Python网络爬虫内容提取器一文我们详细讲解了核心部件:可插拔的内容提取器类gsExtractor。本文记录了确定gsExtra
- 一个简单的JS显示日期代码,可以显示星期几<script type="text/javascript">fu
- 本文实例为大家分享了Python Web静态服务器的具体代码,供大家参考,具体内容如下功能:用户访问服务器可以返回指定页面 步骤: 1.创建
- 背景:不久前,设计实现了京东api的功能,发现如果换了其它快递再重新设计,岂不是会浪费太多的时间,所以选个第三方提供的快递API是最为合理的
- 在使用Python多年以后,我偶然发现了一些我们过去不知道的功能和特性。一些可以说是非常有用,但却没有充分利用。考虑到这一点,我编辑了一些你
- 本教程使用python来生成随机漫步数据,再使用matplotlib将数据呈现出来开发环境操作系统: Windows10 IDE: Pych
- 发现很多朋友对 CSS 的优先权不甚了解,规则很简单。需要说明的一点,如果你的样式管理需要深层判断 CSS 的优先权,更应反思自己的 CSS
- 本文实例讲述了Python贪心算法。分享给大家供大家参考,具体如下:1. 找零钱问题:假设只有 1 分、 2 分、五分、 1 角、二角、 五
- 一、请求扩展1.before_request作用: 类比django中间件中的process_request,在请求到来执行路由函数之前先执
- 大家在学习python中,经常会使用到K-Means和图片压缩的,我们在此给大家分享一下K-Means和图片压缩的方法和原理,喜欢的朋友收藏