根据模型优化工程图:代码架构

时间:2018-11-20 14:29:57

标签: python matplotlib architecture

好的,我有一个关于如何有效地布置代码的问题。

我有一个用python编写的模型,该模型会生成用于在matplotlib中生成图形的结果。按照书面说明,该模型包含在一个文件中,我还有其他15个运行文件,这些文件以复杂的配置进行调用并生成图形。遍历并运行每个运行文件都需要花费一些时间,但是由于它们都为模型使用了完全不同的设置,因此无论如何我都需要拥有复杂的安装文件,并且所有这些都可以使用。

我将输出的数据设置在学术论文中。我现在已经意识到,我将再次需要其他形式的这些图形-一种用于演示(低dpi,中等大小,不同字体),另一种用于海报(高dpi,更大,更大,不同字体)。 / p>

这意味着我每次更改模型时都可能需要处理45个奇数文件。我还必须剪切并粘贴很多样板的matplotlib代码,并进行较小的更改(每个运行文件将变成3个不同的文件-每个图一个)。

有人可以向我解释如何(以及是否)可以加快速度吗?目前,我认为这花了我更长的时间。

我看到它有3个主要选项:

  1. 为每个实际模型运行设置3个运行文件(因此重复相当数量,并且运行模型超出我的需要),但是我可以独立调整所有内容(但可能会丢失一些重要的东西)。
  2. 添加另一层-将结果另存为.csv或等效文件,然后将其读入文件以生成图形。这意味着会有更多的文件,但是我只需要每3个图形运行一次模型(这可能会节省一些时间)。
  3. 保留图形和模型参数文件的集成,但是添加另一个文件来设置图形模板,因此,每次运行该文件时,它会吐出3个图形)这可能会加快速度,并且肯定会保持文件减少,但它们会变得很大(并且可能会更复杂)。
  4. 还有其他事情。

有人可以指出我的资源或为我提供一些有关如何最好地处理此问题的建议吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

我认为您已经快找到想要的东西了。

如果计算需要花费一些时间,请将结果存储在文件中,以便以后处理而无需重新计算。

最重要的是:将代码与配置分开,而不是复制并粘贴此类混合物的变体。

如果模型带有参数,请定义一个模型类。也许只实例化一次模型,但是模型知道如何load_configread_input_datarun。模型也执行write_results。这样,您可以为每个配置甚至输入数据循环执行load_configread_datawrite_results的序列。

例如,以ini格式手工编写配置文件,然后使用confiparser模块加载它们。

为您的Graph类做类似的事情。将模板定义放入配置文件中,包括输出格式,大小字体等。

最后,您将可以使用一个使用此功能的脚本来“管理”预期的工作流程。也许将一组相关的配置文件,输出模板和输入数据存储在一起,对于每个建模会话,每个文件夹一组。