您好,登錄后才能下訂單哦!
這篇文章給大家介紹Facebook開源Hydra中如何簡化Python程序中的配置管理,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
Facebook Hydra是一個新的開源框架,旨在通過簡化命令行參數處理、配置管理和日志記錄等常見功能的實現來加快Python應用程序的創建。
Facebook開發Hydra是為了加快幾個研究項目的開發,其中應對需求變化的能力是關鍵。
Hydra提供了一種組合應用程序配置的創新方法,允許通過配置文件和命令行更改組合。這解決了在修改配置時可能出現的挑戰,比如必須維護配置的許多略有不同的副本,或者添加自定義邏輯來覆蓋各個配置值。
它的主要目標之一是減少處理命令行參數、基于文件的配置、日志記錄等通常需要編寫的樣板代碼。Hydra還提供了一種可插拔的體系結構,旨在支持未來的擴展,比如在云提供商上無縫運行代碼。
減少樣板文件的機制之一是建立一個關于指定應用程序配置方式的約定。特別是,配置由構成層次結構的多個源組成,可以從命令行覆蓋這些源。例如,如果您有一個配置。yaml配置文件包含許多配置選項為您的程序,您可以通過Hydra無縫使用它:
hydra.main(config_path='config.yaml') def my_app(cfg): # use cfg configuration options...
如果在特定的運行中,你想要覆蓋一個配置值,你可以提供新的值在命令行使用:
$ python my_app.py db.user=root db.pass=1234
Hydra還使處理可選配置選項組變得很容易。例如,您可以有兩個配置文件,一個連接到MySQL數據庫,另一個連接到PostgreSQL數據庫。在每次運行你的程序時,你可以通過像這樣在命令行指定配置文件來選擇使用哪個配置文件:
$ python my_app.py db=postgresql
$ python my_app.py db=mysql db.timeout=20
配置文件存儲在單個目錄中,并使用文件系統分層組織。Hydra通過傳遞給應用程序的cfg映射映射文件系統層次結構。這允許在獨立的空間中組織配置選項,然后根據需要組合。例如,除了PostgreSQL和MySQL的配置文件外,你還可以用配置文件來描述你想要使用的數據庫模式,然后在啟動時決定在特定的運行中使用哪種數據庫/模式組合:
$ python my_app.py db=postgresql模式=學校
$ python my_app.py db=mysql schema=home
Hydra使用shell選項卡補全來指導您完成可以在命令行上使用的配置和子配置,因此不需要記住所有允許的組合。另外一個好處是,Hydra將為程序的每次運行創建一個輸出目錄,并將運行時的配置復制到任何輸出文件中。當您希望運行多個實驗并跟蹤結果以便能夠在最后比較它們時,這是理想的。
最后,Hydra包含了一些日志功能,目的是減少與Hydra配置管理完全集成的設置成本。
import logging
# A logger for this file
log = logging.getLogger(__name__)
@hydra.main()
def my_app(_cfg):
log.info("Info level message")
log.debug("Debug level message")
實際上,您可以設置要顯示的日志級別,并在文件級別(從命令行或通過配置文件)打開和關閉日志記錄。
$ python my_app.py hydra.verbose=[__main__,hydra]
如前所述,Facebook計劃利用其可插拔架構來發展Hydra功能。它可以在GitHub上獲得MIT許可。
關于Facebook開源Hydra中如何簡化Python程序中的配置管理就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。