毫秒精确的python计时器

CoM*_*tel 5 python timer

我正在研究旨在同时控制多个执行器的python脚本。为简化起见,假设我需要控制2个电动机。

使用多处理模块,我为每个电动机创建了一个过程,并创建了一个将数据保存在图纸上的过程。

脚本的这一部分工作正常,但是我需要在精确的时间(每毫秒)下命令电动机,并且time.time()或time.clock()函数似乎不可靠(触发范围为0.05到30毫秒!)

这些功能如此不稳定是“正常”的,还是由脚本的另一部分引起的?

编辑:我使用datetime函数(请参见下文)来提高精度,但是我仍然有几个离散的错误级别。例如,如果我想要1ms,我也得到1.25、0.75、1.5 ...因此IMO这是由于计算机硬件(如Serge Ballesta所说)。

Ser*_*sta 2

恕我直言,问题不在您的脚本中,而更可能在您的计算机中。我假设您使用的是Linux 或 Windows 下的标准计算机。即使计算机能够在一毫秒内完成许多事情,它也会不断地执行以下操作:

  • 网络
  • 鼠标或键盘事件
  • 屏幕(包括屏幕保护程序...)
  • 防病毒软件(主要在 Windows 上)
  • 系统或守护进程(而且有很多
  • 多任务管理

如果没有专用的硬件设备,您就无法可靠地希望达到一毫秒的精度,否则您必须使用实时系统。

编辑:

作为补充,这里引用了 Ulrich Eckhardt 对另一篇文章Windows 上的 Python 性能不一致的回答:

您有执行串行 IO 的代码,这将阻止您的进程并可能调用调度程序。如果发生这种情况,它会首先将控制权交给另一个进程,只有当该进程屈服或超过其时间片时,它才会重新安排您的进程。

您面临的问题是:您正在运行的系统的调度程序时间片的大小是多少?我相信这会让您深入了解正在发生的事情。