如何加快Python 應用的啟動時間

2021-09-19 09:24:21 字數 2196 閱讀 9581

我聽說pipenv9.0.2已經發布,啟動時間有了很大的改進。

我很快就試了一下,但我覺得並不快。所以我用python3.7的新特性來研究它。

在本文中,我將介紹該特性以及如何使用它。

啟動時間≒匯入時間

例如,pipenv -h 的執行時間比顯示幫助訊息的時間長得多。

一般來說,當應用程式啟動時,會有一些啟動過程,比如載入環境變數或配置檔案。

對於python應用程式,匯入模組占用了大部分啟動時間。例如,pipenv --version 花費了大約800ms,而import pipenv 花費了700ms。

顯示模組的匯入時間

python 3.7有新的特性來顯示匯入模組的時間。

這個特性是通過 -x importtime 選項或 pythonprofileimporttim 環境變數來啟用的。

或這裡是乙個pipenv --version輸出結果的例子 。

研究匯入時間

在輸出的最後面,你會看到這些行:

在最後一行,579479表示 import pipenv 需要579479us。

在匯入pipenv的同時,還匯入了許多其他模組。從上面的示例中,您可以看到 pipenv 匯入了pipenv.cli。子匯入以2個空格縮排。

再看最後一行。507表示執行pipenv模組時只需要507us。579479-507=578972us用於子匯入。

找出緩慢的部分

我們來從輸出中找到緩慢子樹。我選取了幾行。

如您所見,匯入pkg_resources 很緩慢。

但令人驚訝的是,pkg_resources沒有進行縮排;它不是pipenv的子匯入。

這意味著pkg_resources是由pipenv指令碼而不是模組匯入的。

壞訊息: 匯入pkg_resources很慢。這是乙個已知的問題,在不破壞向後相容性的情況下很難修復。

好訊息: 您可以避免匯入pkg_resources!

在安裝了wheel之後,pip會對它進行構建並從構建包進行安裝。

從wheel (.whl)和原始碼包(.tar.gz)安裝是不同的過程。

從wheel安裝時,指令碼中不使用pkg_resources:

看下面的部分.

pipenv匯入dotenv, dotenv再匯入 dotenv.ipython,它再匯入ipython。

這就是為什麼pipenv在我的環境中開始很慢; 我已經安裝了ipython。

但是為什麼要匯入ipython呢?我閱讀了dotenv原始碼,發現它是用於ipython擴充套件的。

當然,pipenv和許多dotenv使用者並不使用ipython擴充套件。

我向dotenv提交了乙個推送請求,建議dotenv根據需要匯入ipython。

由於pipenv有自己的dotenv副本,所以我向pipenv提交了完全刪除dotenv.ipython的推送請求。

結論

我可以將 pipenv--version 的時間從800ms減少到500ms。

匯入時間分析是研究和優化應用程式啟動時間的好方法。

加快Flex應用啟動速度的5種方式

原文 http www.infoq.com cn news 2008 05 flex startup time jun heider在o reilly的insideria站點上發表了一篇精彩的文章,該文章就 如何加快flex應用的啟動速度提出了很多建議,以幫助使用者減少看見討厭的 loading 對...

加快Flex應用啟動速度的5種方式

作者jon rose譯者張龍 jun heider在o reilly的insideria站點上發表了一篇精彩的文章,該文章就如何加快flex應用的啟動速度提出了很多建議,以幫助使用者減少看見討厭的 loading 對話方塊的出現時間。他深入 了問題的不同方面,並對每種技術的優勢和劣勢進行了評判。從外...

怎樣加快Tomcat的啟動速度

第二要刪除的是logs資料夾下的日誌檔案,時間一久這裡檔案會很多很大,既然不需要了就刪掉它吧。第三是work資料夾下的catalina資料夾,把這個資料夾跟它裡面的所有檔案都刪掉,tomcat容器把每個工程進行編譯,將編譯後的檔案放在這裡,有時候也許會遇到修改了 重啟了tomcat,但是更改仍沒應用...