Python引入延遲導入機制顯著提升程序啟動速度

Python引入延遲導入機制顯著提升程序啟動速度

Python程序即將獲得更快的啟動速度 , 這要歸功于PEP 810\"顯式延遲導入\"提案 , 該功能允許腳本推遲加載導入的庫 , 直到實際需要時才加載 , 而不是在啟動時就加載 。
【Python引入延遲導入機制顯著提升程序啟動速度】這項Python增強提案由指導委員會成員Pablo Salgado于10月3日提出 , 并于11月3日獲得批準 。 該增強功能將把延遲導入直接集成到Python語言中 , 作為一個可選功能 。
在Python中導入模塊既是優勢也是痛點 。 優勢在于幾個導入語句就能極大擴展程序功能 , 但痛點是導入的符號可能永遠不會被使用 , 這可能會增加啟動時間 。 一個典型例子是從命令行調用程序時使用--help參數 , 卻不得不等待加載那些并不需要的導入模塊 。
作為解決方案 , 延遲導入將事情推遲到實際需要時才執行 。
這個想法并不新鮮(令人驚訝的是標準實現竟然花了這么長時間) 。 雖然有多種方法可以實現延遲導入 , 但Python語言本身并沒有內置這個功能 。
這并非全新概念 , 但之前的嘗試都失敗了 。 PEP 690被拒絕 , 部分原因是它將延遲導入設為默認選項 , 引發了對社區分裂和向后兼容性的擔憂 。 與此同時 , 開發者創建了自己的解決方案 , 一些組織甚至分叉了CPython 。
PEP 810通過將延遲導入設為可選功能而獲得成功 , 在保持向后兼容性的同時 , 標準化了目前分散的自定義解決方案格局 。
該提案引起了超過450條評論 , 包括關于\"defer\"(推遲)是否比\"lazy\"(延遲)聽起來更專業的爭論 。
Python指導委員會代表Barry Warsaw發布評論:\"感謝你們在這方面的工作 , 這是Python社區期待已久的功能 。 考慮到早期的嘗試和現有的解決方案 , 我們認為這達到了完美的平衡 。 \"
雖然開發者還需要等待一段時間才能享受到PEP 810的成果 , 但對于許多因漫長加載時間而沮喪的Python用戶來說 , Python本身能夠解決這個問題的功能來得再及時不過了 。
Q&A
Q1:PEP 810延遲導入功能是什么?
A:PEP 810是Python的\"顯式延遲導入\"增強提案 , 允許程序推遲加載導入的庫 , 直到實際需要時才加載 , 而不是在程序啟動時就加載所有導入模塊 , 從而顯著提升Python程序的啟動速度 。
Q2:為什么之前的延遲導入方案沒有成功?
A:之前的PEP 690提案被拒絕 , 主要是因為它將延遲導入設為默認選項 , 引發了社區對兼容性問題和社區分裂的擔憂 。 而PEP 810成功的關鍵在于將延遲導入設為可選功能 , 保持了向后兼容性 。
Q3:PEP 810延遲導入能解決什么實際問題?
A:主要解決Python程序啟動時間過長的問題 。 比如當你在命令行使用--help參數時 , 程序需要加載很多實際用不到的導入模塊 , 延遲導入可以避免這種不必要的等待時間 , 只在真正需要時才加載相應模塊 。


    推薦閱讀