1. Python猴子補(bǔ)丁是啥意思?

        共 1750字,需瀏覽 4分鐘

         ·

        2023-11-12 13:31

        一、什么是猴子補(bǔ)???

        猴子補(bǔ)?。篗onkey Patch,主要功能就是動(dòng)態(tài)的屬性的替換,模塊運(yùn)行時(shí)替換的功能。說直接點(diǎn)就是程序功能的追加或者變更。

        二、Monkey Patch功能簡(jiǎn)介

        Monkey Patch允許在程序運(yùn)行期間動(dòng)態(tài)的修改一個(gè)類或者模塊。

        三、舉個(gè)例子

        之前一個(gè)做游戲的,在很多地方都用了**import json,后來發(fā)現(xiàn)ujson比Python自帶的json快很多,于是問題來了,幾十幾百個(gè)文件難道要一個(gè)一個(gè)的把import json替換成import ujson as json嗎?那也太痛苦了,其實(shí)只需要在進(jìn)程開始的地方使用monkey patch**就行了,它是會(huì)影響整個(gè)進(jìn)程空間的,同一進(jìn)程空間中一個(gè)module只會(huì)被執(zhí)行一次。


        """
        file:json_serialize.py
        """

        import time
        import json

        # 時(shí)間測(cè)試裝飾器
        def run_time(func):
            def inner(*args, **kwargs):
                start_time = time.time()
                result = func(*args, **kwargs)
                end_time = time.time()
                print(f'程序用時(shí):{end_time - start_time}')
                return result

            return inner

        @run_time
        def json_dumps(obj):
            return json.dumps(obj)

        # 生成測(cè)試字典
        test_dict = {i: 1 for i in range(110000001)}

        使用json模塊執(zhí)行原程序:

        """
        file:run.py
        """

        from json_serialize import json_dumps, test_dict

        print(f'json.dumps編碼用時(shí):', 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'使用猴子補(bǔ)丁之后json.dumps編碼用時(shí):', end='')
        json_dumps(test_dict)

        這個(gè)時(shí)候在這個(gè)項(xiàng)目中json模塊就被monkey patch修改為了ujson模塊


        瀏覽 390
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
          
          

            1. 大香蕉毛片 | 啪啪啪免费网站在线观看 | 伊人丁香xxx | 色悠悠久久综合网 | 无码免费视频一区 |