温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Facebook开源Hydra中如何简化Python程序中的配置管理

发布时间:2021-12-02 18:10:25 来源:亿速云 阅读:370 作者:柒染 栏目:互联网科技

这篇文章给大家介绍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程序中的配置管理就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI