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的主要内容,如果未能解决你的问题,请参考以下文章
Python面试题之“猴子补丁”(monkey patching)指的是什么?这种做法好吗?