在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Dis模塊的使用

科技綠洲 ? 來源:Python實用寶典 ? 作者:Python實用寶典 ? 2023-11-02 15:27 ? 次閱讀

Python代碼在執行的時候,會被編譯為Python字節碼,再由Python虛擬機執行Python字節碼。有時候就我們執行python文件的時候會生成一個pyc文件,這個pyc文件即用于存儲Python字節碼指令,而這些字節碼是一種類似于匯編指令的中間語言,但是每個字節碼對應的不是機器指令,而是一段C代碼。

而Dis模塊,就是用于查看這些字節碼的運行軌跡,因此我們可以用Dis模塊判斷兩個函數的內存占用誰會更大,誰會更消耗CPU性能,不僅如此,通過指令,我們還可以知道Python中一些內置函數、變量的取值過程、運行邏輯,對于我們優化代碼很有幫助。

下面將通過兩個例子,來介紹Dis模塊的使用。

1.為什么下面第一個函數比第二個函數耗得內存更少?

圖片

圖片

一般人是比較難直接看出來的,但是我們使用Dis模塊卻能很容易找到答案:

圖片

結果:

圖片

Dis的結果其實很容易閱讀:

第一列: 對應的源代碼行數。
第二列: 對應的內存字節碼的索引位置。
在第一列和第二列之間的 >> 號表示跳轉的目標
第三列: 內部機器代碼的操作。
第四列: 指令參數
第五列: 實際參數。

兩個函數的dis分析用*號隔開了,大家可以清晰地看到兩個函數之間的語句區別。第二個函數的字節碼索引最大到了30,而第一個函數的字節碼索引最大僅到了22,因此,第一個函數耗得內存比第二個函數少。

而且,在第一列和第二列之間的 >> 號表示跳轉的目標,大家可以看第二個函數第四列的 18,表示其跳轉到了索引為18的指令,也就是ROT_TWO。第二個函數的跳轉也比第一個函數多,這也可能導致其在某種特殊情況下的效率可能會比第一個函數低。

2.為什么Python2中,whil****e True 比 while 1慢?

while 1:
    pass

while True:
    pass

可以通過在命令中使用dis進行分析:

圖片

可以看到,while 1 在第二行是直接JUMP_ABSOLUTE,因此相比于While True 少了LOAD_NAME 和 POP_JUMP_IF_FALSE。這是因為True在Python2中不是一個關鍵字,而是一個內置變量,因此每次Python都會用LOAD_NAME去檢查(POP_JUMP_IF_FALSE)True的值。這就是為什么While True 比while 1慢的原因。

到了Python3,True變成了關鍵字,就沒有這個問題了:

圖片

Python 3 針對 Python 2 做了非常多的替換,這也是為什么它不兼容 Python 2 的原因之一,差別太大了。因此,建議各位初學者直接上手 Python 3 進行學習,而非 Python 2.

希望以上兩個Dis模塊的使用例子能給大家帶來一點靈感,分析一段Python代碼的深層次性能問題雖然比較費時費力,但是一旦你分析到了深層次的性能原因,將能累積不少深層次的技術上的知識,寫出更漂亮的代碼。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 模塊
    +關注

    關注

    7

    文章

    2707

    瀏覽量

    47476
  • DIS
    DIS
    +關注

    關注

    0

    文章

    17

    瀏覽量

    16462
  • 虛擬機
    +關注

    關注

    1

    文章

    917

    瀏覽量

    28202
  • python
    +關注

    關注

    56

    文章

    4797

    瀏覽量

    84692
收藏 人收藏

    評論

    相關推薦

    OPA548 DIS是高阻態還是什么狀態?

    如圖:支持利用E/S腳的EN/DIS功能, 想知道 1.DIS是高阻態還是什么狀態, 2.1. 從有輸輸出到輸入DIS電平,到輸出延時時間是多少 2.2.從DIS無輸出到輸入EN電
    發表于 09-02 06:54

    請問OPA695 DIS要怎么接?

    請問OPA695DIS要怎么接?
    發表于 09-06 07:57

    探究python字節碼

    玩這個,Python標準庫中的dis模塊就非常有用了; dis模塊為Python字節碼提供了一個“反匯編程序”,從而可以輕松獲取人為可讀的版本并查找各種字節碼指令。
    發表于 05-22 15:48

    無法閃現開發SPC560B-Dis

    大家好,感謝您的時間和幫助。我正在使用SPC560B-DIS開發板和spc5studio IDE。突然當我試圖閃存開發板時,我在日志中遇到錯誤說:錯誤,Core :: PpcJtagTargIntf
    發表于 01-28 10:36

    DIS仿真系統中的計算機生成兵力研究

    在分析DIS 仿真系統框架的基礎上,討論了仿真系統中的進攻方CGF 系統的實體動態模型、自治行為產生和操作員控制,最后說明了仿真系統中的時空一致性問題。對研究基于DIS 的計
    發表于 03-29 14:37 ?15次下載

    ARM設計的DIS采集系統方案

    ARM設計的DIS采集系統方案 數字化信息系統實驗室(Digital Information System,DIS)是新一代的中小學實驗教學系統,是先進的數字技術應用到
    發表于 04-28 10:05 ?1369次閱讀
    ARM設計的<b class='flag-5'>DIS</b>采集系統方案

    基于ARM的DIS采集系統設計

    2006年,教育部將DIS納入了中小學實驗儀器裝備標準,建議有條件的學校配備。目前,國內已有多家企業有相應的產品,但大多不夠成熟。而國外的類似產品雖然較為成熟,但價格偏
    發表于 07-21 15:46 ?1088次閱讀
    基于ARM的<b class='flag-5'>DIS</b>采集系統設計

    LA46 DIS 09911-1_0126聯想B460 電路圖

    LA46 DIS 09911-1_0126聯想B460 電路圖
    發表于 02-14 16:10 ?87次下載

    基于SPC582B-DIS微控制器的參考設計

    View the reference design for SPC582B-DIS. http://www.xsypw.cn/soft/ has thousands of reference designs to help bring your project to life.
    發表于 07-09 16:43 ?2次下載
    基于SPC582B-<b class='flag-5'>DIS</b>微控制器的參考設計

    彗星DIS SI1構建原理圖下載

    彗星DIS SI1構建原理圖下載
    發表于 07-16 09:58 ?0次下載

    基于SPC560B-DIS微控制器的參考設計

    View the reference design for SPC560B-DIS. http://www.xsypw.cn/soft/ has thousands of reference designs to help bring your project to life.
    發表于 08-31 18:14 ?2次下載
    基于SPC560B-<b class='flag-5'>DIS</b>微控制器的參考設計

    基于SPC560D-DIS微控制器的參考設計

    View the reference design for SPC560D-DIS. http://www.xsypw.cn/soft/ has thousands of reference designs to help bring your project to life.
    發表于 08-31 18:16 ?3次下載
    基于SPC560D-<b class='flag-5'>DIS</b>微控制器的參考設計

    Dis預測意外情況

    ./oschina_soft/dis.zip
    發表于 06-13 11:31 ?4次下載
    <b class='flag-5'>Dis</b>預測意外情況

    ZIWBO0/ZIWB1/ZIWEO DIS M/B示意圖文件

    ZIWBO0/ZIWB1/ZIWEO DIS M/B示意圖文件
    發表于 04-17 10:52 ?1次下載

    python 使用Dis模塊進行代碼性能剖析

    就像一個黑匣子,很多時候我們不知道python內部是怎樣執行代碼的,而且DEBUG的時候也沒有機器指令可以查看,非常不利于代碼優化。但是沒關系,現在我們有Dis模塊來對代碼進行性能剖析。 為什么下面
    的頭像 發表于 11-03 15:39 ?579次閱讀
    python 使用<b class='flag-5'>Dis</b><b class='flag-5'>模塊</b>進行代碼性能剖析
    主站蜘蛛池模板: 久久婷婷成人综合色| 国产女主播在线| bt 电影天堂| 国产呦精品系列在线| 国色天香网在线| 毛片毛片毛片毛片毛片毛片| 一级特黄特黄的大片免费| 欧美在线精品一区二区三区| 夜夜操综合| 国产又粗又大又爽又免费| 久久精品国产99久久72| 四虎最新在线| 欧美地区一二三区| 国产高清美女一级a毛片| 天天色天天操天天射| 狠狠干天天色| 啪啪调教所29下拉式免费阅读| 日本大片免a费观看在线| 高清毛片一区二区三区| 日韩一级片免费观看| 黄视频在线免费看| 狠狠色影院| 天天摸日日干| 久久精品国产精品亚洲精品| 久久噜噜噜久久亚洲va久| 激情综合在线| 午夜看大片| 亚洲 欧美 日韩 丝袜 另类| 亚洲一区欧美日韩| 四虎网址在线| 天天狠天天透| 一级a爰片久久毛片| sese国产| 老师今晚让你爽个够| 国产综合色精品一区二区三区| 色天天综合色天天碰| 自拍你懂的| 美国色网站| 西西人体大胆高清啪啪欧洲| 中日韩在线视频| bt种子搜索-bt天堂|