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.

最新文章

  1. jquery通过class验证表单不能为空
  2. DAO 开发模式的几个类
  3. redis命令String
  4. 一个用微软官方的OpenXml读写Excel 目前网上不太普及的方法。
  5. c中的数据类型、常量、变量
  6. 《深度探索C++对象模型》1
  7. Elasticsearch内存分配设置详解
  8. WWF3常用类 <第十一篇>
  9. 8天学通MongoDB——第一天 基础入门
  10. 算法专题训练 搜索a-T3 Ni骑士(ni)
  11. Office2007设置无格式粘贴
  12. 删除SVN文件 Delete SVN Folders.reg
  13. Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSInvocation setArgument:atIndex:]: index (3) out of bounds [-1, 2]'
  14. 基于git的代码版本管理规范及流程-简版
  15. ●BZOJ 3123 [Sdoi2013]森林
  16. revit二次开发addin文件
  17. SpringBoot时间戳与MySql数据库记录相差14小时排错
  18. c++基础 - constexpr
  19. GO函数
  20. 使用adb命令通过IP地址连接手机

热门文章

  1. CSS定位以及z-index属性(层叠性)的详解(转)
  2. (十四)角色管理(Ztree插件的基本使用)
  3. Linux每隔1秒kill掉cpu大于50%的进程
  4. Ajax中解析Json的两种方法
  5. Xamarin开发综述
  6. React/react相关小结
  7. 3 webpack 4 加vue 2.0生产环境搭建
  8. Windows10+Android Studio 3.5编译项目报错——NDK Resolution Outcome: Project settings: Gradle model version=4.10.1, NDK version is UNKNOWN
  9. 【js监听报错】页面监听js报错问题
  10. NORDIC 烧录BLE协议栈后不能用JLINK仿真bootloader问题及修改方案