page contents

90%学Python的都不知道,猴子补丁?是什么?

本文讲述了90%学python的都不知道,猴子补丁?是什么?具有很好的参考价值,希望对大家有所帮助。一起跟随六星小编过来看看吧,具体如下:

attachments-2023-12-6xdqSc31656ebf4f6b860.png本文讲述了90%学python的都不知道,猴子补丁?是什么?具有很好的参考价值,希望对大家有所帮助。一起跟随六星小编过来看看吧,具体如下:

一、什么是猴子补丁?

猴子补丁:Monkey Patch,主要功能就是动态的属性的替换,模块运行时替换的功能。说直接点就是程序功能的追加或者变更。

二、Monkey Patch功能简介

Monkey Patch允许在程序运行期间动态的修改一个类或者模块。

三、举个例子

之前一个做游戏的,在很多地方都用了**import json,后来发现ujson比Python自带的json快很多,于是问题来了,几十几百个文件难道要一个一个的把import json替换成import ujson as json吗?那也太痛苦了,其实只需要在进程开始的地方使用monkey patch**就行了,它是会影响整个进程空间的,同一进程空间中一个module只会被执行一次。

"""

file:json_serialize.py

"""

import time

import json


# 时间测试装饰器

def run_time(func):

    def inner(*args, **kwargs):

        start_time = time.time()

        result = func(*args, **kwargs)

        end_time = time.time()

        print(f'程序用时:{end_time - start_time}')

        return result


    return inner


@run_time

def json_dumps(obj):

    return json.dumps(obj)


# 生成测试字典

test_dict = {i: 1 for i in range(1, 10000001)}

使用json模块执行原程序:


"""

file:run.py

"""

from json_serialize import json_dumps, test_dict


print(f'json.dumps编码用时:', end='')

r1 = json_dumps(test_dict)

原程序的性能太低,我们可以使用ujson将json替换掉!


使用monkey patch修改后:


"""

file:run.py

"""

import json

import ujson

from json_serialize import json_dumps, test_dict


def monkey_patch_json():

    json.dumps = ujson.dumps


monkey_patch_json()

print(f'使用猴子补丁之后json.dumps编码用时:', end='')

json_dumps(test_dict)

这个时候在这个项目中json模块就被monkey patch修改为了ujson模块。

更多相关技术内容咨询欢迎前往并持续关注六星社区了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

  • 发表于 2023-12-05 14:12
  • 阅读 ( 198 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
小柒
小柒

1316 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1316 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章