zoukankan      html  css  js  c++  java
  • 什么是monkey patch(猴子补丁)

    monkey patch指的是在运行时动态替换,一般是替换(添加)类的方法、类或者模块都可以

    首先使用系统模块的socket,打印socket.socket函数

    然后在使用gevent模块的monkey.patch_socket()函数,打印socket.socket函数

    socket.socket被动态替换成gevent的socket模块

    演示代码如下

    # -*- coding:utf8 -*-
    # /usr/bin/env python
    
    import socket
    
    print(socket.socket)
    
    print("after monkey patch")
    
    from gevent import monkey
    
    monkey.patch_socket()
    
    print(socket.socket)
    
    import select
    
    print(select.select)
    
    monkey.patch_select()
    print("after monkey patch")
    
    print(select.select)

    <class 'socket.socket'>
    after monkey patch
    <class 'gevent._socket3.socket'>
    <built-in function select>
    after monkey patch
    <function select at 0x108989510>

    monkey patch使用自己代码实现

    import time
    
    print(time.time())
    
    def _time():
        return 'abc'
    
    time.time = _time
    
    print(time.time())

    运行时动态替换掉了对应函数

  • 相关阅读:
    带你看懂MySQL执行计划
    MySQL rename table方法大全
    MySQL慢日志全解析
    mybatis-通用mapper
    springboot-数据访问
    docker-1常用命令
    springboot-错误处理
    springboot-配置1
    react--temp
    了解react记录2-生命周期
  • 原文地址:https://www.cnblogs.com/KK150713/p/11176088.html
Copyright © 2011-2022 走看看