我的问题不是直接关于代码中的实现,而是更多关于我应该使用的基本设计或技术。
初始情况: 我有一个执行模拟的 Python 程序。这应该在一天中的不同时间以不同的参数开始。配置文件中描述了不同的情况(模拟)。例如,该文件包含模拟的名称、模拟的运行时间以及该模拟的具体参数。
到目前为止我所实施的: 目前,整个代码都包含在 while true 循环中。其中,一个相对复杂的 if 语句检查当前时间是否与配置文件中的时间匹配,并启动此时要启动的所有模拟。
我的问题: 以最佳/正确的方式实现我的初始情况的最佳方法是什么? while true 和复杂的 if 语句的更好/正确的替代方案是什么?我应该将代码分成多个文件并编写父控件部分吗?我不知道如何正确地实现这样的事情。如果你想在代码中做出决定,你必须学习控制结构(if、else 等)。我必须学习哪个主题?
听起来您已经在模拟程序中实现了自己的小 cron 作业引擎。为了清晰和结构起见,最好将时间调度部分排除在模拟之外,而使用操作系统的方法来实现此目的。
例如在Linux中,您可以为您需要的时间间隔设置一个cron作业,然后将技术参数(模拟运行的名称和其他值)传递给您的程序。
一个例子:
0 10 * * 3 /usr/bin/python /path/to/myscript.py 'Wednesday Simulation' arg1 arg2
这将在每周三 10:00 调用
myscript.py
,参数为“周三模拟”(如名称所示,可在输出或生成的模拟报告中使用)以及 arg1
和 arg2
。
对于 Windows,可以通过使用 计划任务来完成同样的事情。
在您的模拟程序中,您只需删除 while 循环并让它在传递参数的情况下运行一次。