什么是猴子补丁(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.dumpsjson.loads = ujson.loadsmonkey_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来替换.
什么是猴子补丁(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 Patching
0 猴子补丁 - Monkey Patching 1 定义, 2 猴子补丁(monkey patching) 3 在运行时动态修改模块.类或函数,通常是添加功能或修正缺陷.猴子补丁在代码运行时 4 ( ...
- 27.Python中的猴子补丁 (Monkey Patching)
<Python编程的术与道:Python语言进阶>视频课程 <Python编程的术与道:Python语言进阶>视频课程链接:https://edu.csdn.net/cours ...
- 猴子补丁(Monkey Patching)
猴子补丁是我在面试的时候接触的一到题,学python的时候,我根本就没有听说这个概念!那接下来我们来分析一下: 1.什么是猴子补丁? 2.猴子补丁的功能? 3.猴子补丁的应用场景? 一.什么是猴子补丁 ...
- python 猴子补丁_python面试题精讲——monkey patch(猴子补丁)
前言本次依然是选自python面试题系列,将一个比较偏的概念,可能很多人没怎么听说过--猴子补丁,其实所讲的内容很简单,它得益于python灵活的语法.一切皆对象的思想,一起来看看看看吧!目录一.什么 ...
- Python中的Monkey Patch(猴子补丁)
一.猴子补丁的介绍 关于猴子补丁为啥叫猴子补丁,据说是这样子的: 这个叫法起源于Zope框架,大家在修正Zope的Bug的时候经常在程序后面追加更新部分,这些被称作是"杂牌军补丁(gueri ...
- monkey patch(猴子补丁)
一.什么是monkey patch 在网上也查了一下,关于这个名字起的比较随意,也勉强理解这样吧: 这个词原来叫Guerrilla Patch,杂牌军.游击队,说明这部分不是原装的,在英文里面guer ...
最新文章
- px像素如何转为dip设备独立像素设备独立像
- 面向对象程序设计上机练习一(函数重载)
- 进栈顺序为abcd则出栈顺序为_线性表之顺序表示
- 各种友(e)善(xin)数论总集,从入门到绝望2
- 用java写的常见排序
- setsockopt()用法(参数详细说明)
- 最新版的Python写春联,支持行书隶书楷书,不再有缺失汉字
- 软件工程导论复习之需求分析
- html本地修改浏览器自动更新,更改html代码后网页不更新
- URL中经常出现的百分号22是什么意思
- Python优化算法05——蚁群算法和免疫优化算法
- 计算机音乐算法冯,计算机辅助算法作曲方法研究与软件设计
- poj-1625 Censored![ac自动机+dp+高精度]
- 中医大2020年7月网考计算机应用基础,2020年7月网络教育统考计算机应用基础模拟题试卷9...
- 动态规划的最优原理与无后效性解析
- c语言实现陷波器算法,50Hz数字陷波器的设计.doc
- 2021年6月4日大学化学无机原理(13)原子的电子层结构
- Hack The Boo 2022 CTF题目writeups
- ORACLE 获取某一日期所在周的周一
- Linux CentOS 中安装 MySQL 与卸载 MySQL(三)
热门文章
- 论文阅读:Predicting Dynamic Embedding Trajectory inTemporal Interaction Networks(JODIE模型)
- Python爬取NGA帖子
- nga php,index.php
- 【数据结构】-关于带头双向循环链表的增删查改
- 一篇小学生作文《我的爸爸在华为》,看哭无数人!
- 1.Excel vba开发-处理空格数据
- Decentralized Identifiers (DIDs)
- 【建站】手把手教你搭建惊艳的博客
- python中values是什么意思_Python values()与itervalues()的用法详解
- 易语言 取出中间文本