我有一个函数可以为我的游戏服务器中的所有玩家和对象运行 tick()。我通过每 0.1 秒循环一组来做到这一点。我需要它是一个坚实的.1。很多时间和数学取决于这个暂停尽可能精确到 0.1 秒。为此,我将其添加到刻度线:
start_time = time.time()
# loops and code and stuff for tick thread in here...
time_lapsed = time.time() - start_time # get the time it took to run the above code
if 0.1 - time_lapsed > 0:
time.sleep(0.1 - time_lapsed)
else:
print "Server is overloaded!"
# server lag is greater that .1, so don't sleep, and just eat it on this run.
# the goal is to never see this.
我的问题是,这是最好的方法吗?如果我的循环持续时间是 0.01,那么 time_lapsed == 0.01 ... 然后睡眠时间应该只有 0.09。我问,因为它似乎不起作用。前几天我开始收到服务器超载的消息,服务器绝对没有超载。关于“动态”控制睡眠的好方法有什么想法吗?也许有另一种方法可以在不睡觉的情况下每十分之一秒运行一次代码?