在Python中调用日期时函数的好方法是什么?
我知道有三种方式:
“我们还在吗?!” (检查日期是否已经过了间隔(time.sleep(interval)
))
这显然很糟糕。只有间隔很小才能准确,效率低下。
避开差异(time.sleep(timedelta.seconds)
)
这样更好,但我不喜欢让线程长时间睡眠的想法,例如6个月,如果是这样的话。
上述两者之间的混合;如果差异低于间隔,则可以避开差异。如果超过,请睡一段时间以防止长时间睡眠 我认为当你想到长时间的睡眠时,这是三个中最好的,但是间隔看起来很糟糕。
还有其他方法可以想到吗?标准库中是否有任何东西可以帮助我在场景后面的日期时间调用一个函数?
编辑:
我问这个是因为我实际上用Python开发了自己的Cron实现。唯一的问题是我无法决定我的代码应该如何等待下一次出现。我的实现与原始Cron之间的差异之一是支持秒。所以,简单地睡觉最小可能的间隔(在我的情况下为1秒)效率太低。
我现在意识到这个问题可能会改为“Cron怎么做?”即“Cron如何检查是否有任何日期过去了?它是否经常运行还是每分钟都有一个过程运行?”。我认为后者就是这种情况,如果间隔为1秒,这种情况再次效率低下 另一个区别是我的代码读取crontab一次并从模式计算下一次出现的确切日期(日期时间对象)。我猜,Cron只是检查每一分钟crontab中的任何模式是否与当前时间匹配。
如果没有其他方法可以做到这一点,我会坚持“混合”方式。
答案 0 :(得分:1)
如果这可能像你说的那样可能有六个月的时间,那么chron的工作可能比保持python程序一直运行更合适。
答案 1 :(得分:0)
我使用gobject主循环,但任何带有事件循环的库都应具备此功能。
答案 2 :(得分:0)
使用cron作业可能是个好主意。
您可以使用以下命令编辑cron表:crontab -e 并添加这样的一行(每20分钟调用一次)
* / 20 * * * * / usr / bin / python /home/toto/my_script.py