<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 1750字,需瀏覽 4分鐘

           ·

          2023-11-12 13:31

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

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

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

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

          三、舉個(gè)例子

          之前一個(gè)做游戲的,在很多地方都用了**import json后來(lái)發(fā)現(xiàn)ujson比Python自帶的json快很多,于是問(wèn)題來(lái)了,幾十幾百個(gè)文件難道要一個(gè)一個(gè)的把import json替換成import ujson as json嗎?那也太痛苦了,其實(shí)只需要在進(jìn)程開(kāi)始的地方使用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)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  久久成人导航 | 国产精品久久久久久无人区 | 麻豆美女在线 | 人人干人人操人人摸 | 天天干天天噜天天操 |