python的协程,monkeyPatch
2024-10-06 08:46:16
monkey patch 一般指运行时候进行动态替换.
基本上我们使用gevent,会在最开头的地方加入gevent.monkey.patch_all()
;把标准库中的thread/socket
等给替换掉.这样我们在后面使用socket的时候它会变成非阻塞的了.而我们却什么也不用做.
一个案列
from gevent import monkey; monkey.patch_all()
import gevent
from urllib import request
def run_task(url):
print("开始访问 --> %s" % url)
try:
response = request.urlopen(url)
data = response.read()
print("{} bytes received from {}".forma(len(data), url))
except Exception:
print("访问中出错了")
if __name__ == '__main__':
urls = ['https://baidu.com/', 'https://github.com','https://blog.csdn.net/', 'https://cnblogs.com/lovesKey']
# 定义协程方法
greenlets = [gevent.spawn(run_task, url) for url in urls]
# 添加协程任务,并且启动运行
gevent.joinall(greenlets)
最快访问结束的会在第一位,最慢的会在最后一位.
输出结果:
Visit --> https://baidu.com/
Visit --> https://github.com
Visit --> https://blog.csdn.net/
Visit --> https://cnblogs.com/lovesKey
154097 bytes received from https://baidu.com/.
26813 bytes received from https://cnblogs.com/lovesKey.
155908 bytes received from https://blog.csdn.net/.
86916 bytes received from https://github.com.
最新文章
- jquery通过class验证表单不能为空
- DAO 开发模式的几个类
- redis命令String
- 一个用微软官方的OpenXml读写Excel 目前网上不太普及的方法。
- c中的数据类型、常量、变量
- 《深度探索C++对象模型》1
- Elasticsearch内存分配设置详解
- WWF3常用类 <;第十一篇>;
- 8天学通MongoDB——第一天 基础入门
- 算法专题训练 搜索a-T3 Ni骑士(ni)
- Office2007设置无格式粘贴
- 删除SVN文件 Delete SVN Folders.reg
- Terminating app due to uncaught exception &#39;NSInvalidArgumentException&#39;, reason: &#39;-[NSInvocation setArgument:atIndex:]: index (3) out of bounds [-1, 2]&#39;
- 基于git的代码版本管理规范及流程-简版
- ●BZOJ 3123 [Sdoi2013]森林
- revit二次开发addin文件
- SpringBoot时间戳与MySql数据库记录相差14小时排错
- c++基础 - constexpr
- GO函数
- 使用adb命令通过IP地址连接手机
热门文章
- CSS定位以及z-index属性(层叠性)的详解(转)
- (十四)角色管理(Ztree插件的基本使用)
- Linux每隔1秒kill掉cpu大于50%的进程
- Ajax中解析Json的两种方法
- Xamarin开发综述
- React/react相关小结
- 3 webpack 4 加vue 2.0生产环境搭建
- Windows10+Android Studio 3.5编译项目报错——NDK Resolution Outcome: Project settings: Gradle model version=4.10.1, NDK version is UNKNOWN
- 【js监听报错】页面监听js报错问题
- NORDIC 烧录BLE协议栈后不能用JLINK仿真bootloader问题及修改方案