我正在研究旨在同时控制多个执行器的python脚本。为简化起见,假设我需要控制2个电动机。
使用多处理模块,我为每个电动机创建了一个过程,并创建了一个将数据保存在图纸上的过程。
脚本的这一部分工作正常,但是我需要在精确的时间(每毫秒)下命令电动机,并且time.time()或time.clock()函数似乎不可靠(触发范围为0.05到30毫秒!)
这些功能如此不稳定是“正常”的,还是由脚本的另一部分引起的?
编辑:我使用datetime函数(请参见下文)来提高精度,但是我仍然有几个离散的错误级别。例如,如果我想要1ms,我也得到1.25、0.75、1.5 ...因此IMO这是由于计算机硬件(如Serge Ballesta所说)。
恕我直言,问题不在您的脚本中,而更可能在您的计算机中。我假设您使用的是Linux 或 Windows 下的标准计算机。即使计算机能够在一毫秒内完成许多事情,它也会不断地执行以下操作:
如果没有专用的硬件设备,您就无法可靠地希望达到一毫秒的精度,否则您必须使用实时系统。
编辑:
作为补充,这里引用了 Ulrich Eckhardt 对另一篇文章Windows 上的 Python 性能不一致的回答:
您有执行串行 IO 的代码,这将阻止您的进程并可能调用调度程序。如果发生这种情况,它会首先将控制权交给另一个进程,只有当该进程屈服或超过其时间片时,它才会重新安排您的进程。
您面临的问题是:您正在运行的系统的调度程序时间片的大小是多少?我相信这会让您深入了解正在发生的事情。