python -m cProfile -o輸出. prof your_program
運行後,將生成壹個output.profile文件。接下來,我們需要分析這個文件。在這方面,我推薦SnakeViz這個工件作為壹個工具。安裝非常簡單,只需pip安裝snakeviz即可。
snakeviz輸出
運行後會打開壹個瀏覽器窗口,好好看看哪些函數最耗時,是因為調用次數太多,還是因為單次調用耗時太長,優化重點明確;
2.減少重復計算,緩存計算結果。看看functools.lru_cache。
3.不使用for可以使用列表合成的地方;能用numpy的地方,不要手寫循環,不要用熊貓;;
4.看看妳的背測。如果有40w tick,數據量不大,應該是直接加載到內存裏吧?
5.如果還是慢,就去Numba-Numba,安裝比較麻煩,用起來非常方便,速度提高壹兩個數量級沒問題;
6.如果妳用的包都支持PyPy,那就試試PyPy;
7.Cython,c模塊,如果以上都不行,這是最後壹個候選。