Python 是解釋型語言,使用解釋器直接將源代碼解析成二進度代碼就可運行 (不用編譯)。
C/C++ 等編譯型編程語言,需要將源代碼編譯成二進製可執行代碼後纔可執行。
CPython 解釋器本身的 GIL (全局解釋器鎖) 技術,會將應用程序牢牢綁定到單物理綫程。
不管 CPU 有多少物理核心,多少物理綫程,GIL 技術強製使用單物理綫程。
在 GIL 技術下,若一個應用程序同時運行幾個軟綫程,應用程序可能會頻繁崩潰。
因為一個軟綫程未運行完成,另一個軟綫程再運行,將導緻此 CPU 物理綫程過於繁忙而崩潰。
將要同時運行的幾個軟綫程,分彆放到不現進程中。
將要同時運行的幾個軟綫程,按類似協程的方式順序運行。
當一個軟綫程在運行時,另一個就不能運行。
使所有軟綫程,盡可能異步運行。
使用 Jython、PyPy 等其它解釋器實現。
使用 C C++ Cython 等其它編程語言,實現存在性能瓶頸的代碼部分。
當采用 Cython 時,主要是使用 with gil 和 with nogil 編寫 *.PYX 模塊文件。
另請參閱:
版權聲明: 本文為獨傢原創稿件,版權歸 樂數軟件 ,未經許可不得轉載。