什么是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())

運行時動態替換掉了對應函數


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM