<option id="mwy0y"><strong id="mwy0y"></strong></option>
  • <ul id="mwy0y"><sup id="mwy0y"></sup></ul>
  • <ul id="mwy0y"></ul>
  • <del id="mwy0y"><dfn id="mwy0y"></dfn></del><ul id="mwy0y"><sup id="mwy0y"></sup></ul>
  • <abbr id="mwy0y"></abbr>

    千鋒教育-做有情懷、有良心、有品質的職業教育機構

    400-811-9990
    手機站
    千鋒教育

    千鋒學習站 | 隨時隨地免費學

    千鋒教育

    掃一掃進入千鋒手機站

    領取全套視頻
    千鋒教育

    關注千鋒學習站小程序
    隨時隨地免費學習課程

    上海
    • 北京
    • 鄭州
    • 武漢
    • 成都
    • 西安
    • 沈陽
    • 廣州
    • 南京
    • 深圳
    • 大連
    • 青島
    • 杭州
    • 重慶
    當前位置:長沙千鋒IT培訓  >  技術干貨  >  pythonGIL的原理

    pythonGIL的原理

    來源:千鋒教育
    發布人:xqq
    時間: 2023-11-12 04:39:58

    python中GIL的原理

    1、說明

    GIL規定一個Python解釋程序只能同時由一個線程控制。

    在CPU限制類型和多線程代碼中,GIL是一個性能瓶頸。

    GIL使Python多線程成為偽并行多線程。

    僅CPython解釋器上存在GIL。

    2、原理

    (1)線程1、2、3輪流執行,每一個線程在執行是,都會鎖住GIL,以阻止別的線程執行;

    同樣的,每一個線程執行一段后,會釋放GIL,以允許別的線程開始利用資源。

    (2)由于古老GIL機制,如果線程2需要在CPU2上執行,它需要先等待在CPU1上執行的線程1釋放GIL(記住:GIL是全局的)

    (3)如果線程1是因為i/o阻塞讓出的GIL,那么線程2必定拿到GIL。但如果線程1是因為timerticks計數滿100ticks(大概對應了1000個bytecodes)讓出GIL,那么這個時候線程1和線程2公平競爭。

    (4)但要命的是,在Python2.x,線程1不會動態的調整自身的優先級,所以很大概率下次被選中執行的還是線程1,在很多個這樣的選舉周期內,線程2只能安靜的看著線程1拿著GIL在CPU1上歡快的執行。

    (5)極端一點的情況下,比如線程1使用了whileTrue在CPU1上執行,那就真是“一核有難,八核圍觀”了。

    以上就是python中GIL的原理介紹,希望能對大家有所幫助。如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。

    聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。

    猜你喜歡LIKE

    python實現WSGI的框架

    2023-11-13

    python打開文本文件有哪些方法?

    2023-11-13

    python使用loguru操作日志

    2023-11-13

    最新文章NEW

    python-=是什么意思

    2023-11-13

    pythonre是什么?

    2023-11-13

    python列表追加元素出錯的解決

    2023-11-13

    相關推薦HOT

    更多>>

    快速通道 更多>>

    最新開班信息 更多>>

    網友熱搜 更多>>