如何定期检查程序中的当前日期?

时间:2011-07-04 11:33:44

标签: python perl date calendar

我想为某人写一个类似日历的小应用程序作为生日礼物(在Ubuntu上运行)。所有它应该做的是每天显示一个单独的图片,所以每当它被调用它应该检查日期并从我将提供的集合中选择适当的图片,但是,如果它只是继续运行,它应该切换到下一张图片第二天开始的时候。

调用日期检查不是问题;我的问题与第二种情况有关:如何让程序注意到第二天的开始?我笨拙的做法是让它定期检查当前日期,并在日期发生变化后让它改变显示的图片,但这让我觉得非常迂回,并不是特别优雅。

如果你们中的任何一个人已经知道我如何能够做到这一点,请不要犹豫回复。我的目标是用Perl或Python编写应用程序,所以关于这两种语言的建议将是最受欢迎的,但任何其他建议也将受到赞赏。

非常感谢你的时间!

2 个答案:

答案 0 :(得分:1)

您是否考虑过调度脚本的调用?

对我来说,最好的方法就是:

1.有两个选项来运行脚本:

  • RUN_SCRIPT
  • run_script --update

2.在每天执行的某个任务调度程序(例如Cron)中安排更新运行。

3.当您想要检查当天的图像时,只需运行不带更新选项的脚本。

如果您希望我扩展其中的任何部分,只需询问它。

答案 1 :(得分:1)

这个问题的答案可能与系统有关。控制程序执行的时间可能取决于系统。在所有* nix类型的系统上,我会使用cron。假设您正在使用* nix系统,那么答案取决于程序实际执行的操作。

如果它只需要选择一个图像,那么我会建议它不是连续运行,而是在选择后自行终止,然后在第二天再次运行(有很多关于如何设置cron的教程)。

但是,如果它有某种形式的用户界面并且很可能(可以阅读)继续运行几天,那么你可以采用两种方法:

  1. 按原样创建程序,定期轮询当前时间,并进行日期差异比较。 Python timedelta objects可以在这里提供帮助。这几乎是你不优雅的方法。
  2. 另一种解决方案是在您希望更新时从cron发送信号。这个过程意味着你必须让它发出信号,并回应像USR1这样的东西。 The Python docs与此交谈,但您可以在网上找到许多教程。对于守护进程的应用程序,这种方法也非常适用。
  3. 我确信还有很多其他的方法,但是这些是为了一个快速和令人讨厌的应用而想到的。