可視化使用和不使用生成器的記憶體使用情況可以幫助了解效率優勢。以下是兩個場景下的記憶體使用情況比較:
假設我們有一個簡單的函數,它會傳回從 0 到 999,999 的數字數組。該函數將所有資料一次性載入記憶體。
呼叫函數getNumbersArray時:
| Memory Usage Without Generators | |------------------------------------------------------| | Start | * | | | ** | | | *** | | | **** | | | ***** | | | ****** | | | ******* | | ... | ******************************************| | End | ******************************************| |------------------------------------------------------|
現在,我們使用生成器函數一次產生一個數字。
呼叫產生器函數numberGenerator時:
| Memory Usage With Generators | |------------------------------------------------------| | Start | * | | | * | | | * | | | * | | | * | | | * | | | * | | ... | * | | End | * | |------------------------------------------------------|
產生器透過一次產生一項並在整個腳本執行過程中保持較低的記憶體使用量,提供顯著的記憶體效率優勢,尤其是對於大型資料集。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3