查看: 829|回复: 7

“猴子补丁”(monkey patching)指的是什么?

[复制链接]
论坛徽章:
3
python徽章
日期:2018-05-31 17:03:40Agile徽章
日期:2018-06-07 16:21:51算法导论徽章
日期:2018-07-19 15:02:04
发表于 2018-4-25 14:12 | 显示全部楼层 |阅读模式
“猴子补丁”(monkey patching)指的是什么?
回复

使用道具 举报

论坛徽章:
29
Julia徽章
日期:2018-05-17 15:58:56统计徽章
日期:2018-08-16 14:58:18股票徽章
日期:2018-08-24 10:51:37时间序列分析徽章
日期:2018-08-30 15:34:18Oracle研习者初级
日期:2018-08-30 15:34:23金融徽章
日期:2018-09-13 15:38:56Kaggle徽章
日期:2018-09-29 11:01:04R研习者初级
日期:2018-10-18 14:51:54Tensorflow徽章
日期:2018-11-16 14:09:33python徽章
日期:2018-11-16 14:10:20python徽章
日期:2018-11-16 14:11:04机器学习徽章
日期:2018-11-16 14:11:57
发表于 2018-4-25 14:15 | 显示全部楼层

请参考https://blog.csdn.net/fly910905/article/details/77152110

https://en.wikipedia.org/wiki/Monkey_patch

简单说,就是动态替换模块

回复 支持 反对

使用道具 举报

论坛徽章:
18
机器学习徽章
日期:2017-05-11 17:17:35python徽章
日期:2018-05-31 17:03:40Keras徽章
日期:2018-04-26 15:29:45Hadoop研习者初级
日期:2018-03-29 16:08:43机器学习徽章
日期:2018-03-29 16:05:00技术内幕徽章
日期:2018-01-25 17:07:17Java徽章
日期:2018-01-04 17:14:48python徽章
日期:2017-12-28 17:08:21Oracle研习者初级
日期:2017-10-26 15:09:26R研习者中级
日期:2017-10-26 15:08:38perl徽章
日期:2017-10-20 16:35:05R研习者中级
日期:2017-09-28 17:18:49
发表于 2018-4-29 10:57 | 显示全部楼层
猴子补丁的叫法有些莫名其妙,只要和“模块运行时替换的功能”对应就行了。
回复 支持 反对

使用道具 举报

论坛徽章:
33
Julia徽章
日期:2017-12-25 17:39:25金融徽章
日期:2018-10-25 15:10:06python徽章
日期:2018-12-27 15:35:13股票徽章
日期:2019-01-10 14:04:57股票徽章
日期:2019-01-10 14:08:38python徽章
日期:2019-02-21 14:39:06机器学习徽章
日期:2019-02-28 15:01:04pyspark徽章
日期:2019-04-04 17:10:37python徽章
日期:2019-04-11 15:16:08人工智能徽章
日期:2019-04-19 10:52:29人工智能徽章
日期:2019-04-19 10:52:53Git徽章
日期:2019-04-28 13:58:08
发表于 2018-4-29 17:42 | 显示全部楼层
这个叫法肯定是有一定的来源的,不管他是什么,能够用的起来就可以了。
回复 支持 反对

使用道具 举报

论坛徽章:
20
Hadoop研习者初级
日期:2012-11-18 23:09:43cognos徽章
日期:2016-03-10 10:28:12Mycat徽章
日期:2016-10-13 17:46:45Hadoop研习者初级
日期:2017-02-09 18:07:32Excel徽章
日期:2017-02-23 15:57:21HBase徽章
日期:2017-03-10 12:01:24Hive徽章
日期:2017-06-22 17:21:55python徽章
日期:2018-05-31 17:03:40linux徽章
日期:2018-06-07 16:22:18数据治理徽章
日期:2015-06-18 11:35:54mysql徽章
日期:2014-12-30 17:47:12Oracle研习者初级
日期:2012-11-26 11:09:47
发表于 2018-4-29 22:10 | 显示全部楼层
第一次听说这样的说法。。
回复 支持 反对

使用道具 举报

论坛徽章:
20
Hadoop研习者初级
日期:2012-11-18 23:09:43cognos徽章
日期:2016-03-10 10:28:12Mycat徽章
日期:2016-10-13 17:46:45Hadoop研习者初级
日期:2017-02-09 18:07:32Excel徽章
日期:2017-02-23 15:57:21HBase徽章
日期:2017-03-10 12:01:24Hive徽章
日期:2017-06-22 17:21:55python徽章
日期:2018-05-31 17:03:40linux徽章
日期:2018-06-07 16:22:18数据治理徽章
日期:2015-06-18 11:35:54mysql徽章
日期:2014-12-30 17:47:12Oracle研习者初级
日期:2012-11-26 11:09:47
发表于 2018-4-29 22:23 | 显示全部楼层
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只会被运行一次.

回复 支持 反对

使用道具 举报

论坛徽章:
10
Hadoop研习者初级
日期:2012-09-28 23:48:40python徽章
日期:2018-12-13 15:57:58linux徽章
日期:2018-08-16 14:58:24Oracle研习者初级
日期:2014-09-19 14:06:28python徽章
日期:2013-11-20 10:50:55nosql徽章
日期:2013-11-12 16:18:18Oracle研习者中级
日期:2013-08-25 14:25:49python徽章
日期:2013-05-09 13:21:43Oracle研习者初级
日期:2012-10-18 10:33:23python徽章
日期:2019-01-17 15:26:03
发表于 2018-9-19 17:17 | 显示全部楼层
还是头一次听说猴子补丁,学习了!
Python的方法这么容易能被篡改,风险很大啊!
回复 支持 反对

使用道具 举报

新浪微博达人勋 yinong  实名认证
论坛徽章:
31
数据陷阱解读徽章
日期:2016-03-10 10:18:46matlab徽章
日期:2017-02-16 16:46:56机器学习徽章
日期:2017-03-30 17:23:20Tensorflow徽章
日期:2017-08-03 18:16:28比特币徽章
日期:2017-09-28 17:18:05金融徽章
日期:2017-12-08 10:41:29区块链徽章
日期:2017-12-25 17:32:20Excel徽章
日期:2018-01-04 17:13:02Excel徽章
日期:2018-03-01 16:43:21OpenCV徽章
日期:2018-05-10 16:26:44matlab徽章
日期:2018-05-24 16:09:45股票徽章
日期:2018-06-29 11:14:50
发表于 2018-9-30 13:58 | 显示全部楼层
猴子补丁的叫法有些莫名其妙。猴子补丁的叫法有些莫名其妙。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

 

GMT+8, 2019-7-19 07:31 , Processed in 0.112003 second(s), 58 queries .