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)相关推荐

  1. python猴子补丁_Python猴子补丁Monkey Patch用法实例解析

    属性在运行时的动态替换,叫做猴子补丁(Monkey Patch). 为什么叫猴子补丁 属性的运行时替换和猴子也没什么关系,关于猴子补丁的由来网上查到两种说法: 1.这个词原来为Guerrilla Pa ...

  2. python画猴子_Python猴子补丁Monkey Patch用法实例解析

    属性在运行时的动态替换,叫做猴子补丁(Monkey Patch). 为什么叫猴子补丁 属性的运行时替换和猴子也没什么关系,关于猴子补丁的由来网上查到两种说法: 1.这个词原来为Guerrilla Pa ...

  3. python的猴子补丁(Monkey Patching)

    0. 参考文档 参考文档如下: https://achowdhary.com/monkey-patching/ https://www.cnblogs.com/xp1315458571/p/16049 ...

  4. 猴子补丁 - Monkey Patching

    0 猴子补丁 - Monkey Patching 1 定义, 2 猴子补丁(monkey patching) 3 在运行时动态修改模块.类或函数,通常是添加功能或修正缺陷.猴子补丁在代码运行时 4 ( ...

  5. 27.Python中的猴子补丁 (Monkey Patching)

    <Python编程的术与道:Python语言进阶>视频课程 <Python编程的术与道:Python语言进阶>视频课程链接:https://edu.csdn.net/cours ...

  6. 猴子补丁(Monkey Patching)

    猴子补丁是我在面试的时候接触的一到题,学python的时候,我根本就没有听说这个概念!那接下来我们来分析一下: 1.什么是猴子补丁? 2.猴子补丁的功能? 3.猴子补丁的应用场景? 一.什么是猴子补丁 ...

  7. python 猴子补丁_python面试题精讲——monkey patch(猴子补丁)

    前言本次依然是选自python面试题系列,将一个比较偏的概念,可能很多人没怎么听说过--猴子补丁,其实所讲的内容很简单,它得益于python灵活的语法.一切皆对象的思想,一起来看看看看吧!目录一.什么 ...

  8. Python中的Monkey Patch(猴子补丁)

    一.猴子补丁的介绍 关于猴子补丁为啥叫猴子补丁,据说是这样子的: 这个叫法起源于Zope框架,大家在修正Zope的Bug的时候经常在程序后面追加更新部分,这些被称作是"杂牌军补丁(gueri ...

  9. monkey patch(猴子补丁)

    一.什么是monkey patch 在网上也查了一下,关于这个名字起的比较随意,也勉强理解这样吧: 这个词原来叫Guerrilla Patch,杂牌军.游击队,说明这部分不是原装的,在英文里面guer ...

最新文章

  1. px像素如何转为dip设备独立像素设备独立像
  2. 面向对象程序设计上机练习一(函数重载)
  3. 进栈顺序为abcd则出栈顺序为_线性表之顺序表示
  4. 各种友(e)善(xin)数论总集,从入门到绝望2
  5. 用java写的常见排序
  6. setsockopt()用法(参数详细说明)
  7. 最新版的Python写春联,支持行书隶书楷书,不再有缺失汉字
  8. 软件工程导论复习之需求分析
  9. html本地修改浏览器自动更新,更改html代码后网页不更新
  10. URL中经常出现的百分号22是什么意思
  11. Python优化算法05——蚁群算法和免疫优化算法
  12. 计算机音乐算法冯,计算机辅助算法作曲方法研究与软件设计
  13. poj-1625 Censored![ac自动机+dp+高精度]
  14. 中医大2020年7月网考计算机应用基础,2020年7月网络教育统考计算机应用基础模拟题试卷9...
  15. 动态规划的最优原理与无后效性解析
  16. c语言实现陷波器算法,50Hz数字陷波器的设计.doc
  17. 2021年6月4日大学化学无机原理(13)原子的电子层结构
  18. Hack The Boo 2022 CTF题目writeups
  19. ORACLE 获取某一日期所在周的周一
  20. Linux CentOS 中安装 MySQL 与卸载 MySQL(三)

热门文章

  1. 论文阅读:Predicting Dynamic Embedding Trajectory inTemporal Interaction Networks(JODIE模型)
  2. Python爬取NGA帖子
  3. nga php,index.php
  4. 【数据结构】-关于带头双向循环链表的增删查改
  5. 一篇小学生作文《我的爸爸在华为》,看哭无数人!
  6. 1.Excel vba开发-处理空格数据
  7. Decentralized Identifiers (DIDs)
  8. 【建站】手把手教你搭建惊艳的博客
  9. python中values是什么意思_Python values()与itervalues()的用法详解
  10. 易语言 取出中间文本