客户端和服务器之间的Python计时

客户端和服务器之间的Python计时,python,time,server,client,timing,Python,Time,Server,Client,Timing,我在python计时方面遇到了问题。现在我正在用服务器和客户端(使用twisted)创建一个游戏。我试图测量一个数据包到达所需的时间,以便正确计算速度。我试过用time.time()和time.clock()解决同样的问题。他们就是不可靠 所以我要做的是大约每0.2秒发送一次移动更新。我测量了客户端在0.202649094381秒后发送的数据包。服务器使用当前时间减去我们上次获取数据包的时间。然而,服务器表示,自收到最后一个数据包以来,花费了0.19164764274秒。这是没有意义的,服务器获

我在python计时方面遇到了问题。现在我正在用服务器和客户端(使用twisted)创建一个游戏。我试图测量一个数据包到达所需的时间,以便正确计算速度。我试过用time.time()和time.clock()解决同样的问题。他们就是不可靠


所以我要做的是大约每0.2秒发送一次移动更新。我测量了客户端在0.202649094381秒后发送的数据包。服务器使用当前时间减去我们上次获取数据包的时间。然而,服务器表示,自收到最后一个数据包以来,花费了0.19164764274秒。这是没有意义的,服务器获取数据包的速度不应该超过客户端发送数据包的速度,特别是如果您考虑到本机网络延迟的话。这似乎是断断续续发生的(客户端:0.202243417922,服务器:0.20065745487),python怎么会如此不精确?我尝试了time.time()和time.clock(),前者应该使用系统时钟,后者应该测量CPU时钟,但两者仍然不够可靠。也许我做错了?任何帮助都将不胜感激。

您的服务器正在测量自上次收到数据包以来的时间。如果它比客户机时间短,那不就是说前一个数据包延迟了一点吗。我想你需要寻找多个周期的趋势。顺便说一句,在linux上使用
time.time
,在windows上使用
time.clock
。在linux上,
time.clock
测量cpu时间,而不是墙壁时间。在Windows上,<代码>时间>时钟<代码>是更高的分辨率。这是我没有考虑的一个好点。然而,如果时间总是在流逝,那么随着时间的推移,趋势也不会有帮助,因为一切都将停止。目前我使用的是time.clock,因为我使用的是windows。如果你的服务器在一艘加速向冥王星飞行的宇宙飞船上,它会变慢。。。但对我们大多数人来说,它持续变慢确实是很奇怪的。在我的LinuxMint笔记本电脑上,我看到了0.000020秒的分辨率。在这个尺度上看到抖动是正常的。但是如果它在很长一段时间内持续关闭,我会非常困惑。如果你指的是获得对更新有效的平均速度。然而,最初的运动可能还远未结束(有时差异高达8%)。即使它是随着时间的推移而产生的,但不是最初的结果,而且我经常对它进行采样,那么它并不能解决它的预期功能,即防止移动速度黑客攻击。您的服务器正在测量自上次收到数据包以来的时间。如果它比客户机时间短,那不就是说前一个数据包延迟了一点吗。我想你需要寻找多个周期的趋势。顺便说一句,在linux上使用
time.time
,在windows上使用
time.clock
。在linux上,
time.clock
测量cpu时间,而不是墙壁时间。在Windows上,<代码>时间>时钟<代码>是更高的分辨率。这是我没有考虑的一个好点。然而,如果时间总是在流逝,那么随着时间的推移,趋势也不会有帮助,因为一切都将停止。目前我使用的是time.clock,因为我使用的是windows。如果你的服务器在一艘加速向冥王星飞行的宇宙飞船上,它会变慢。。。但对我们大多数人来说,它持续变慢确实是很奇怪的。在我的LinuxMint笔记本电脑上,我看到了0.000020秒的分辨率。在这个尺度上看到抖动是正常的。但是如果它在很长一段时间内持续关闭,我会非常困惑。如果你指的是获得对更新有效的平均速度。然而,最初的运动可能还远未结束(有时差异高达8%)。即使它是随着时间的推移而产生的,但不是最初的结果,而且我经常对它进行采样,那么它并不能解决它的预期功能,即防止移动速度攻击。