溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Facebook開源Hydra中如何簡(jiǎn)化Python程序中的配置管理

發(fā)布時(shí)間:2021-12-02 18:10:25 來源:億速云 閱讀:368 作者:柒染 欄目:互聯(lián)網(wǎng)科技

這篇文章給大家介紹Facebook開源Hydra中如何簡(jiǎn)化Python程序中的配置管理,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

Facebook Hydra是一個(gè)新的開源框架,旨在通過簡(jiǎn)化命令行參數(shù)處理、配置管理和日志記錄等常見功能的實(shí)現(xiàn)來加快Python應(yīng)用程序的創(chuàng)建。

Facebook開發(fā)Hydra是為了加快幾個(gè)研究項(xiàng)目的開發(fā),其中應(yīng)對(duì)需求變化的能力是關(guān)鍵。

Hydra提供了一種組合應(yīng)用程序配置的創(chuàng)新方法,允許通過配置文件和命令行更改組合。這解決了在修改配置時(shí)可能出現(xiàn)的挑戰(zhàn),比如必須維護(hù)配置的許多略有不同的副本,或者添加自定義邏輯來覆蓋各個(gè)配置值。

它的主要目標(biāo)之一是減少處理命令行參數(shù)、基于文件的配置、日志記錄等通常需要編寫的樣板代碼。Hydra還提供了一種可插拔的體系結(jié)構(gòu),旨在支持未來的擴(kuò)展,比如在云提供商上無縫運(yùn)行代碼。

減少樣板文件的機(jī)制之一是建立一個(gè)關(guān)于指定應(yīng)用程序配置方式的約定。特別是,配置由構(gòu)成層次結(jié)構(gòu)的多個(gè)源組成,可以從命令行覆蓋這些源。例如,如果您有一個(gè)配置。yaml配置文件包含許多配置選項(xiàng)為您的程序,您可以通過Hydra無縫使用它:

hydra.main(config_path='config.yaml')
def my_app(cfg):
    # use cfg configuration options...

如果在特定的運(yùn)行中,你想要覆蓋一個(gè)配置值,你可以提供新的值在命令行使用:

$ python my_app.py db.user=root db.pass=1234

Hydra還使處理可選配置選項(xiàng)組變得很容易。例如,您可以有兩個(gè)配置文件,一個(gè)連接到MySQL數(shù)據(jù)庫,另一個(gè)連接到PostgreSQL數(shù)據(jù)庫。在每次運(yùn)行你的程序時(shí),你可以通過像這樣在命令行指定配置文件來選擇使用哪個(gè)配置文件:

$ python my_app.py db=postgresql

$ python my_app.py db=mysql db.timeout=20

配置文件存儲(chǔ)在單個(gè)目錄中,并使用文件系統(tǒng)分層組織。Hydra通過傳遞給應(yīng)用程序的cfg映射映射文件系統(tǒng)層次結(jié)構(gòu)。這允許在獨(dú)立的空間中組織配置選項(xiàng),然后根據(jù)需要組合。例如,除了PostgreSQL和MySQL的配置文件外,你還可以用配置文件來描述你想要使用的數(shù)據(jù)庫模式,然后在啟動(dòng)時(shí)決定在特定的運(yùn)行中使用哪種數(shù)據(jù)庫/模式組合:

$ python my_app.py db=postgresql模式=學(xué)校

$ python my_app.py db=mysql schema=home

Hydra使用shell選項(xiàng)卡補(bǔ)全來指導(dǎo)您完成可以在命令行上使用的配置和子配置,因此不需要記住所有允許的組合。另外一個(gè)好處是,Hydra將為程序的每次運(yùn)行創(chuàng)建一個(gè)輸出目錄,并將運(yùn)行時(shí)的配置復(fù)制到任何輸出文件中。當(dāng)您希望運(yùn)行多個(gè)實(shí)驗(yàn)并跟蹤結(jié)果以便能夠在最后比較它們時(shí),這是理想的。

最后,Hydra包含了一些日志功能,目的是減少與Hydra配置管理完全集成的設(shè)置成本。

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")

實(shí)際上,您可以設(shè)置要顯示的日志級(jí)別,并在文件級(jí)別(從命令行或通過配置文件)打開和關(guān)閉日志記錄。

$ python my_app.py hydra.verbose=[__main__,hydra]

 如前所述,F(xiàn)acebook計(jì)劃利用其可插拔架構(gòu)來發(fā)展Hydra功能。它可以在GitHub上獲得MIT許可。

關(guān)于Facebook開源Hydra中如何簡(jiǎn)化Python程序中的配置管理就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI