【问题标题】:High-precision system time in pythonpython中的高精度系统时间
【发布时间】:2011-12-05 17:17:26
【问题描述】:

有没有办法在python中获取高精度的系统时间?

我有一个小应用程序可以使用虚拟 COM 端口。我想测量消息发送和接收之间的时间间隔。

目前它是这样工作的:

我得到消息,使用

    time.time()

并将其 20 位数字附加到消息中。客户端应用程序收到此消息并获取

    time.time()

再次,然后计算它们的差异。在大多数情况下,时间间隔(如我所料)等于零。

问题是:有什么方法可以更智能、更精确地做到这一点?

【问题讨论】:

  • 如果发送方和接收方在不同的机器上,你如何处理不同的时基?在任何情况下,串行端口驱动程序都会在您需要时向您发送消息,这是非常可变的(根据我的经验,为 10 毫秒)。
  • 发送方和接收方在同一台机器上(我使用的是虚拟 COM 端口)。该程序是为教育目的而编写的,所以我想问是否有解决这个问题的智能方法

标签: python serial-port


【解决方案1】:

这是time.clock的摘录

在 Unix 上,将当前处理器时间作为浮点数返回,以秒为单位。精度,事实上非常 “处理器时间”的含义的定义,取决于 同名的 C 函数,但无论如何,this 是 用于基准测试 Python 或计时算法。

在 Windows 上,此函数返回自第一次调用此函数以来经过的挂钟秒数,作为浮点数,基于 Win32 函数 QueryPerformanceCounter()。分辨率是 通常优于一微秒

强调我的)

【讨论】:

  • 非常感谢您的回答,但客户端和发送方应用程序作为不同的进程工作。那么,如何使用这个函数来计算时间间隔呢?
  • 我真的不能说。最好的机会是在收到消息之前阻止send,这样您就可以抓住之前和之后的时间。一种方法是期待回复,但这会影响您的结果。另一种选择是发送一条很长的消息,需要几分钟才能传输,这样time.time() 就会有足够的精度。我真的希望有人找到更好的解决方案...
  • 在代码开始时根据 time.time 校准 QueryPerformanceCounter,因此您发送的时间戳将是 time.time() 的高精度版本。值得一试!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-28
  • 1970-01-01
  • 2015-12-08
  • 2015-12-21
  • 2010-12-21
  • 1970-01-01
相关资源
最近更新 更多