在 Python 基礎科學運算中,我們習於使用 NumPy 以方便且快速地實現矩陣運算,然而在部分情境下仍會遇到效能瓶頸。舉例來說,我們利用 NumPy 線性代數模組處理一個大型線性最小平方問題,但效能瓶頸卻發生在使用原生 Python 迴圈建造矩陣的過程。在本文中,我們將探討 Python 效能瓶頸問題,並試圖使用一些現有工具去達成運算加速的目的,同時比較這些工具之間的特性。
在執行程式的時候通常會需要存取資源,一般來說資源的來源可能是檔案、遠端連線、或是某種 Socket。當程式在調用資源的時候基本上包含兩個動作:
- 請求資源使用權 (以檔案來說就是讀或寫之類的)、以及
- 釋放資源使用權。
本篇我們將整理在 Python 中面對資源存取問題時,透過 with
的常見作法、其物件意涵、以及內建套件 contextlib
的一些使用時機。