在很多仿真中,时间是一个重要的因素。有时我们希望时间加快,或者让事情比真实世界中发生得更快,这样就不必等待那么长时间才能得出会发生什么。有时可能希望慢下来,因为有些事情通常发生得太快让人来不及观察,通过让时间减慢,就能更好地观察这样一些事情。有些时候则希望程序保持实时(real time)——就是与真实世界中保持一致。不论哪种情况,我们都需要用某种时钟在程序中度量时间。
每个计算机都内置有一个时钟,可以用来度量时间。前面我们已经见过几个使用和度量时间的例子。
在第 8 章,我们使用
time.sleep
函数建立了一个倒计时的定时器。在我们完成的几个 Pygame 程序中,使用了 Pygame 的
time.delay
和clock.tick
函数来控制动画速度或帧速率。还使用get_fps
检查动画运行的快慢,这也是一种度量时间的方法(每一帧的平均时间)。
到目前为止,我们总是在程序运行时跟踪时间,不过有时还需要在程序不运行时跟踪时间。如果在 Python 中建立一个电子宠物(Virtual Pet)程序,你可能并不希望让它一直都在运行。你会玩一会,然后停止程序,以后再玩。在你离开期间,宠物可能会累或者会饿,或者会去睡觉。所以程序需要知道从最后一次运行以来已经过去了多长时间。
要做到这一点,可以让程序在关闭之前将信息(当前时间)保存到文件中。这样一来,下一次启动时,程序可以读取这个文件,得到原来的时间,并检查当前时间,比较这两个时间从而得出从程序上一次运行以来已经过去了多长时间。
Python 提供了一种特殊的对象来处理时间和日期。我们将在下一节更详细地学习 Python 的日期和时间对象。
术语箱
将当前时间保存到文件中以备以后读取,这称为一个时间戳(timestamp)。