使用一个字典或多个字典来存储程序配置

时间:2018-10-11 09:08:09

标签: python design-patterns

我正在编写一个包含许多(约30-40个)参数的Python程序,所有这些参数均具有默认值,并且所有这些参数都应在用户运行时进行调整。按照我的设置方式,这些参数分为4个字典,分别对应于程序的4个不同模块。但是,我遇到了一些情况,其中一个模块需要多个模块中的一个参数,这使我考虑将字典统一为一个大的配置字典,甚至可能是一个分配给每个模块的配置对象。 我的问题是

  1. 这对运行时间有影响吗?我怀疑不是,但想确定。

  2. 这被认为是好的做法吗?对于我描述的问题,还有其他解决方法吗?

1 个答案:

答案 0 :(得分:1)

  1. 可能对运行时没有影响。较大的词典可以花费更长的时间查找,但对于您而言,我们正在谈论40个项目。没什么。
  2. 我们使用单个设置文件,在其中我们通过调用从环境中读取配置的方法,文件或Python文件(作为全局变量)来初始化全局变量。读取配置的方法可以获取所需的类型和默认值。其他人使用 YAML TOML 表示配置,我猜测然后将它们存储在全局可访问对象中。如果可以在运行时更改设置,则必须在线程安全方面保护该对象(当然,如果有线程)。