从模型优化绘图:代码架构

2024-04-27 14:57:33 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我有一个用python编写的模型,该模型生成的结果用于在matplotlib中生成图形。如前所述,该模型包含在一个文件中,我还有15个运行文件,它们以复杂的配置调用它并生成图形。浏览和运行每个运行文件都需要一段时间,但是由于它们对模型使用的设置都有很大的不同,所以我需要复杂的设置文件,而且都能正常工作

我已经把这些数字的输出设置好了,可以写进学术论文。我现在已经意识到,我将需要这些数字中的每一个在其他格式-一个用于演示(低dpi,中等大小,不同的字体)和一个用于海报(高dpi,更大,不同的字体再次)

这意味着,每当我想对模型进行更改时,可能会有45个以上的文件需要遍历。我还需要剪切和粘贴大量样板matplotlib代码,只需稍加修改(每个运行文件将变成3个不同的文件-每个图形对应一个)

有人能向我解释一下我怎样(如果)加快速度吗?目前,我觉得我花的时间比应该花的要长得多

在我看来,主要有三种选择:

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

有谁能给我指点一个资源,或者给我一些关于如何最好地处理这个问题的建议吗

谢谢


Tags: 文件代码模型图形内容matplotlib时间字体
1条回答
网友
1楼 · 发布于 2024-04-27 14:57:33

我想你快找到你想要的了

如果计算需要一些时间,则将结果存储在文件中以供以后处理,而无需重新计算

最重要的是:将代码与配置分开,而不是复制粘贴这种混合的变体

如果模型采用参数,请定义一个模型类。可能只实例化一次模型,但是模型知道如何load_configread_input_datarun。模型也做write_results。这样您就可以为每个配置循环一个load_configread_datawrite_results序列,还可以循环输入数据

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

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

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

相关问题 更多 >