python的猴子补丁monkey patch
monkey patch指的是在运行时动态替换,一般是在startup的时候.
用过gevent就会知道,会在最开头的地方gevent.monkey.patch_all();把标准库中的thread/socket等给替换掉.这样我们在后面使用socket的时候可以跟平常一样使用,无需修改任何代码,但是它变成非阻塞的了.
之前做的一个游戏服务器,很多地方用的import json,后来发现ujson比自带json快了N倍,于是问题来了,难道几十个文件要一个个把import json改成import ujson as json吗?
其实只需要在进程startup的地方monkey patch就行了.是影响整个进程空间的.
同一进程空间中一个module只会被运行一次.
下面是代码.
main.py
import json
import ujson
def monkey_patch_json(): json.__name__ = 'ujson' json.dumps = ujson.dumps json.loads = ujson.loads monkey_patch_json() print 'main.py',json.__name__ import sub
sub.py
import json
print 'sub.py',json.__name__
运行main.py,可以看到都是输出'ujson',说明后面import的json是被patch了的.
最后,注意不能单纯的json = ujson来替换.
转载于:https://www.cnblogs.com/work115/p/5817781.html
python的猴子补丁monkey patch相关推荐
- python画猴子_Python猴子补丁Monkey Patch用法实例解析
属性在运行时的动态替换,叫做猴子补丁(Monkey Patch). 为什么叫猴子补丁 属性的运行时替换和猴子也没什么关系,关于猴子补丁的由来网上查到两种说法: 1.这个词原来为Guerrilla Pa ...
- python猴子补丁_Python猴子补丁Monkey Patch用法实例解析
属性在运行时的动态替换,叫做猴子补丁(Monkey Patch). 为什么叫猴子补丁 属性的运行时替换和猴子也没什么关系,关于猴子补丁的由来网上查到两种说法: 1.这个词原来为Guerrilla Pa ...
- python的猴子补丁(Monkey Patching)
0. 参考文档 参考文档如下: https://achowdhary.com/monkey-patching/ https://www.cnblogs.com/xp1315458571/p/16049 ...
- 什么是猴子补丁(monkey patch)
monkey patch指的是在运行时动态替换,一般是在startup的时候. 用过gevent就会知道,会在最开头的地方gevent.monkey.patch_all();把标准库中的thread/ ...
- 27.Python中的猴子补丁 (Monkey Patching)
<Python编程的术与道:Python语言进阶>视频课程 <Python编程的术与道:Python语言进阶>视频课程链接:https://edu.csdn.net/cours ...
- 猴子补丁 - Monkey Patching
0 猴子补丁 - Monkey Patching 1 定义, 2 猴子补丁(monkey patching) 3 在运行时动态修改模块.类或函数,通常是添加功能或修正缺陷.猴子补丁在代码运行时 4 ( ...
- 说说Python中猴子补丁是什么?
公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助! 小猿会从最基础的面试题开始, ...
- 猴子补丁(Monkey Patching)
猴子补丁是我在面试的时候接触的一到题,学python的时候,我根本就没有听说这个概念!那接下来我们来分析一下: 1.什么是猴子补丁? 2.猴子补丁的功能? 3.猴子补丁的应用场景? 一.什么是猴子补丁 ...
- 解决python使用猴子补丁时引入ssl错误
首先是requests对https发起请求时报ssl错误 解决: requests提供了两个参数 1. verify 官方给出的解释为 当参数为False时,请求将接受由提交的任何TLS证书并将忽略主 ...
- python 猴子补丁_python面试题精讲——monkey patch(猴子补丁)
前言本次依然是选自python面试题系列,将一个比较偏的概念,可能很多人没怎么听说过--猴子补丁,其实所讲的内容很简单,它得益于python灵活的语法.一切皆对象的思想,一起来看看看看吧!目录一.什么 ...
最新文章
- SpringBoot配置文件值注入方式
- linux驱动读取文件失败怎么办,linux – 由于单个驱动器读取错误导致软件RAID-1导致内核故障...
- html语言制作网页,HTML语言的网页制作技巧与方法
- socket 端口和地址复用
- [react] 你知道的react性能优化有哪些方法?
- java面试题4 牛客:运行下列代码,运行结果为
- C语言中auto,register,extern,static【转】
- keil stm32标准库放在哪里_STM32之PWM
- python连接redis哨兵_Python redis.sentinel方法代码示例
- MATLAB中的柱面与球面
- 飞控硬件在环之GPS模拟器
- Odin - Inspector and Serializer 学习笔记总结
- html代码 层次选择器,CSS样式类的实例代码(导航栏、分页、层级选择器)
- chrome浏览器小恐龙自动跑
- 知名互联网公司架构图
- 什么软件测试苹果手机循环电池,教你如何检测苹果手机电池的损耗
- 小小摩尔福斯之网络侦探
- Android 强大的图片加载缓存— Glide
- 如何通过CND指令创建一个新的Maven 项目,已经如何部署到tomcat 的webapps目录下
- 楚留香哪个服务器最新,楚留香官服和混合服哪个好 哪个服务器的人多
热门文章
- nyoj Splits the string 749
- 英文文本处理 c github_真香警告!有了这个搜索大法,GitHub可以玩到飞起来!
- 求两个等长升序序列的中位数
- 获取天气预报API_统计最容易生病时间段
- Day004 20210209-20210217
- html最大化和最小化,电脑上最大化最小化图标变了怎么办
- python爬虫 同花顺_python Flask+爬虫制作股票查询、历史数据、股评词云网页
- mysql语句解析_MYSQL中SQL执行分析
- Morris Traversal
- 【ZOJ 4097 The 19th Zhejiang University Programming Contest H】Rescue the Princess【边双连通缩点+LCA】