Python中如何切換GIL?
1、透過判斷指令計數器切換GIL
(1)python的直譯器是在一個大的迴圈中逐個解析位元組碼指令;
(2)每次迴圈開始都會檢查一下_Py_Ticker的值。
{ ... for (;;) ... if (--_Py_Ticker < 0) { ... _Py_Ticker = _Py_CheckInterval; ... if (interpreter_lock) { ... PyThread_release_lock(interpreter_lock); PyThread_acquire_lock(interpreter_lock, 1); } } ... switch (opcode) { case: ... } } }
2、IO阻塞之前切換GIL
Python允許在執行block型的system call之前允許其他執行緒執行(Py_BEGIN_ALLOW_THREADS),然後再重新嘗試獲取GIL(Py_END_ALLOW_THREADS)。
#define Py_BEGIN_ALLOW_THREADS { PyThreadState *_save; _save = PyEval_SaveThread();
以上就是Python中切換GIL的方法,希望對大家有所幫助。更多Python學習推薦:
本文教程操作環境:windows7系統、Python 3.9.1,DELL G3電腦。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4422/viewspace-2830388/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用VS Code時如何切換Python版本?VS Code中如何在Python3與Python2之間自由切換?Python
- 如何在cmd下切換python版本使用Python
- 切換系統中多個python版本Python
- 如何將 Debian Linux 中的預設的 Python 版本切換為LinuxPython
- 對 Python 中 GIL 的一點理解Python
- Mac切換Python版本MacPython
- 詳解Python GILPython
- jupyter notebook中 切換不同的Python環境Python
- 怎麼切換python版本Python
- Ubuntu下python版本切換UbuntuPython
- Python GIL(Global Interpreter Lock)Python
- Linux系統中如何切換使用者?Linux
- Homestead如何切換命令列中php的版本命令列PHP
- 如何切換SVN賬號
- 看板工具Leangoo中,如何快速切換專案內看板?Go
- 你見過Python的GIL嗎Python
- 寶塔如何切換PHP版本PHP
- 微信小程式-uniapp-切換tab時資料列表如何切換?微信小程式APP
- 生產環境中如何切換MySQL儲存引擎GAMySql儲存引擎
- 程式切換(上下文切換)
- 【記錄】Ubuntu18.04 切換 Python 版本UbuntuPython
- Mac環境下WingIDE切換python版本MacIDEPython
- mac電腦如何切換雙系統,雙系統該怎麼切換Mac
- Python多執行緒與GIL鎖Python執行緒
- python GIL的使用及弊端處理Python
- Python GIL(全域性直譯器鎖)Python
- 如何從 Docker Desktop 切換到 ColimaDocker
- KindEditor如何切換成簡單模式??模式
- Selenium系列教程-09 如何切換iframe
- Win10怎樣切換平板模式_win10如何切換到平板模式Win10模式
- GIL在python的獲取和釋放Python
- kubeconfig 多個叢集配置 如何切換
- 切換代理IP時如何檢查IP?
- 如何更優雅地切換 Git 分支Git
- win10 如何在不同視窗切換 win10 切換不同的桌面方法Win10
- 電腦如何切換螢幕_電腦怎麼切換另一個介面快捷鍵
- 棧切換
- Python3 原始碼閱讀-深入瞭解Python GILPython原始碼