python的猴子补丁monkey patch

Posted CXH的技术博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python的猴子补丁monkey patch相关的知识,希望对你有一定的参考价值。

monkey patch指的是在运行时动态替换,一般是在startup的时候.

用过gevent就会知道,会在最开头的地方gevent.monkey.patch_all();把标准库中的thread/socket等给替换掉.这样我们在后面使用socket的时候可以跟平常一样使用,无需修改任何代码,但是它变成非阻塞的了.

一个比较实用的例子,很多代码用到 import json,后来发现ujson性能更高,如果觉得把每个文件的import json 改成 import ujson as json成本较高,或者说想测试一下用ujson替换json是否符合预期,只需要在入口加上:

1 import json 
2 import ujson 
3 
4 def monkey_patch_json(): 
5     json.__name__ = ujson 
6     json.dumps = ujson.dumps 
7     json.loads = ujson.loads 
8 
9 monkey_patch_json()

 

最后,注意不能单纯的json = ujson来替换.

以上是关于python的猴子补丁monkey patch的主要内容,如果未能解决你的问题,请参考以下文章

猴子补丁(monkey patch)

Python面试题之“猴子补丁”(monkey patching)指的是什么?这种做法好吗?

什么是monkey patch(猴子补丁)

python协程初步--gevent库使用以及解释什么是猴子补丁monkey_patch

Python中的猴子补丁

gevent协程之猴子补丁带来的坑