ca1721,网上兼职赚钱网站,黄岩斜
the term monkey patch only refers to dynamic modifications of a class or module at runtime, motivated by the intent to patch existing third-party code as a workaround to a bug or feature which does not act as desired
即在运行时对方法 / 类 / 属性 / 功能进行修改,把新的代码作为解决方案代替原有的程序,也就是为其打上补丁。
the term monkey patch seems to have come from an earlier term, guerrilla patch, which referred to changing code sneakily – and possibly incompatibly with other such patches – at runtime.the word guerrilla, homophonous with gorilla (or nearly so), became monkey, possibly to make the patch sound less intimidating.[1] an alternative etymology is that it refers to “monkeying about” with the code (messing with it).
class example(): def func1(self): print('我才是原装') def func2(*args): print('我要取代你') def func3(*args): print('都给我一边去') instance = example() example.func1 = func2 instance.func1() # 我要取代你 instance.func1 = func3 instance.func1() # 都给我一边去 instance2 = example() instance2.func1() # 我要取代你
例子非常简单,func2取代的是类的方法,func3取代的是实例的方法,最终输出都不是原装
在使用gevent模块的使用就会遇到猴子补丁
import gevent.monkey gevent.monkey.patch_all()
使用猴子补丁的方式,gevent能够修改标准库里面大部分的阻塞式系统调用,包括socket、ssl、threading和 select等模块,而变为协作式运行。也就是通过猴子补丁的monkey.patch_xxx()来将python标准库中模块或函数改成gevent中的响应的具有协程的协作式对象。这样在不改变原有代码的情况下,将应用的阻塞式方法,变成协程式的。
这里参考
在使用猴子补丁的时候同样容易出现问题
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
新手学习Python2和Python3中print不同的用法
Python基于os.environ从windows获取环境变量
网友评论