首页 > 其他分享 >猴子补丁

猴子补丁

时间:2023-11-12 11:46:05浏览次数:19  
标签:play ujson 补丁 猴子 json gevent print import

什么是猴子补丁?

# 只是一个概念,不属于任何包和模块
# 利用了python一切皆对象的理念,在程序运行过程中,动态修改方法
# 概念
class Monkey():
    def play(self):
        print('猴子在玩')


class Dog():
    def play(self):
        print('狗子在玩')

m=Monkey()
# m.play()  # 猴子在玩
m.play=Dog().play

m.play()  # 狗子在玩  被动态修改了

有什么用?

# 这里有一个比较实用的例子,
# 很多用到import json,后来发现ujson性能更高,
# 如果觉得把每个文件的import json改成import ujson as json成本较高,
# 或者说想测试一下ujson替换是否符合预期, 只需要在入口加上:

import json
import ujson

def monkey_patch_json():
    json.__name__ = 'ujson'
    json.dumps = ujson.dumps
    json.loads = ujson.loads
monkey_patch_json()

aa=json.dumps({'name':'tiger','age':18})  # 这时候所有的json.dumps其实是ujson.dumps
print(aa)

协程:单线程下实现并发

from gevent import monkey;monkey.patch_all()
import gevent
import time
def eat():
    print('eat food 1')
    time.sleep(2)      # 实际是gevent.sleep(2)
    print('eat food 2')

def play():
    print('play 1')
    time.sleep(1)      # 实际是gevent.sleep(1)
    print('play 2')

g1=gevent.spawn(eat)
g2=gevent.spawn(play)
gevent.joinall([g1,g2])
print('主')

标签:play,ujson,补丁,猴子,json,gevent,print,import
From: https://www.cnblogs.com/piggthird/p/17826917.html

相关文章

  • python题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个
    程序分析:无。实例(Python2.0+)#!/usr/bin/python#-*-coding:UTF-8-*-if__name__=='__main__':i=0j=1x=0while(i<5):x=4*jforiinrange(0,5):if(x%4!=0):breakelse:i......
  • oracle 9i 10g 11g安装文件及补丁集下载地址 全版(备用)
    Oracle9iDatabaseRelease2Enterprise/Standard/PersonalEditionforWindowsNT/2000/XPhttp://download.oracle.com/otn/nt/oracle9i/9201/92010NT_Disk1.ziphttp://download.oracle.com/otn/nt/oracle9i/9201/92010NT_Disk2.ziphttp://download.oracle.com/otn/nt/orac......
  • 【宝藏工具】开源组件信息一键查询,快速获取组件来源、版本、源码地址、漏洞补丁、推荐
    铁子们,分享一个开源组件安全检索免费工具,需要的自取~输入组件名,一键查询可以组件版本、来源、安全状态、漏洞详情和推荐版本、修复建议这些。点这个链接注册后直接就能用:组件安全检索工具 一键查询第三方组件版本、漏洞、所属国家、所属语言、源码链接等:查看漏洞详情:......
  • Python monkey patch(猴子补丁)
    猴子补丁(monkeypatch)-简书(jianshu.com)python面试题精讲——monkeypatch(猴子补丁)-知乎(zhihu.com)classA:deffunc(self):print("Hi")defmonkey(self):print("Hi,monkey")a=A()a.func()'''运行结果Hi......
  • 猴子补丁?是什么?
    一、什么是猴子补丁?猴子补丁:MonkeyPatch,主要功能就是动态的属性的替换,模块运行时替换的功能。说直接点就是程序功能的追加或者变更。二、MonkeyPatch功能简介MonkeyPatch允许在程序运行期间动态的修改一个类或者模块。三、举个例子之前一个做游戏的,在很多地方都用了**importjso......
  • 内核补丁查询
    https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/mm/debug.c?h=linux-5.4.y&id=4d35427ad7641cba08ea0deffae1a78147ad41c0......
  • Premiere CC2018 Mac汉化版「Pr 常用视频编辑软件」附汉化补丁
    Premierecc2018mac版是Adobe公司开发的一款可以在Mac系统上运行的常用视频编辑软件。作为行业数一数二的视频编辑软件,Prcc2018mac版提供了剪辑、调色、采集、美化音频、字幕添加、输出、DVD刻录的一整套流程,并且与其他的Adobe软件高效集成,使用户可以在编辑、制作、以及工作流上......
  • 补丁版本
    前言补丁版本就是里程碑版本发布后的修补版本,例如1.28发布后的1.28.1、1.28.2都是补丁版本。发布节奏通常是一个月一次,也会提前1到2周。例如1.28.1是2023年8月24号,1.28.2是2023年9月13号。补丁支持周期通常是14个月。什么是cherrypicks是git的一个功能,阅读https://waynerv......
  • 传奇客户端常见补丁功能解析
    NewopUI.Pak基础补丁如血条界面框等很多用到这个补丁ChrSel.pak游戏登陆界面,选择人物界面图Effect.pak沙的门和墙破碎图Hair.pak人物头发图Magic.pak魔法效果图Magic2.pak补充魔法效果图,召唤神兽时符和雷电的图MagIcon.pak技能栏里的魔法缩略图Mon1.pak-Mon**.pak各种传奇......
  • Python猴子补丁
    Python猴子补丁介绍猴子补丁是一种替换方法的方式。因为python是动态语言,所以我们在方法执行之前,可以将方法替换,以达到我们期望的结果。需要理解的是,python的方法在加上括号之前,代表的的只是方法的内存,可以被当做一个变量进行传递。使用#示例classTest:  a=1 ......