eventlet绿化和patch原理

本文详细介绍了eventlet库的绿化原理,包括利用非阻塞操作改变阻塞行为,以及绿化后的引用管理。探讨了三种绿化引入方法:直接import、eventlet.import_patch和eventlet.monkey_patch,分别阐述了它们的特点和适用场景。通过实例展示了绿化过程,并指出并非所有模块都能自动绿化,需要针对性处理。
摘要由CSDN通过智能技术生成

说明

eventlet是一个必备工具,经常用,绿化原理有点忘记了,重新复习一遍.

三个主要问题

  1. 绿化的原理是什么?

  2. 绿化怎么管理?

  3. 绿化怎么引入?

绿化原理

利用select/epolls/kqueue等操作系统提供的非阻塞操作,将阻塞改为非阻塞.

引用管理

eventlet在import之后,将模块中的属性绿化.

用一小段代码来查看看

import sys
import eventlet
# eventlet.monkey_patch()

httplib2 = eventlet.import_patched('httplib2')
print(httplib2)
print(httplib2.socket)

print("================")
for k,v in sys.modules.items():
    if "socket" in k:
        print(k, v)


# 打印内容
<module 'httplib2' from 'D:\\workspace\\venv\\xxx\\lib\\site-packages\\httplib2\\__init__.py'>
<module 'eventlet.green.socket' from 'D:\\workspace\\venv\\xxx\\lib\\site-packages\\eventlet\\green\
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值