我编写了一些代码,以便随时间从GPIO获取传感器读数。 为了确保测量结果符合特定的时间,我想知道python是否以恒定的速度迭代(以便迭代之间的差距是恒定的) - 迭代之间的最小时间差是多少。python是否以恒定速度迭代?
如果他们不是,有人可以让我知道如何使时间间隔不变。 谢谢!
我编写了一些代码,以便随时间从GPIO获取传感器读数。 为了确保测量结果符合特定的时间,我想知道python是否以恒定的速度迭代(以便迭代之间的差距是恒定的) - 迭代之间的最小时间差是多少。python是否以恒定速度迭代?
如果他们不是,有人可以让我知道如何使时间间隔不变。 谢谢!
不,Python不会以恒定速度迭代。
Python只是Raspberry PI上的另一个进程,您的操作系统负责将时间分配给CPU(称为multi-tasking)。其他进程也获得分配时间。这意味着Python永远不会一直运行,任何处理时间都将取决于其他进程在做什么。
迭代本身也是授权到特定类型;如何生成下一个项目然后变化很大,即使Python被持续访问CPU迭代仍然会有所不同。无论你在循环体中做什么都需要时间,除非输入和输出总是完全相同,否则几乎肯定会花费不同的时间来完成这项工作。
而不是尝试定时循环,在一个循环中用time.time()
或timeit.default_timer
(取决于你需要的精确度,在你的树莓上它将是相同的函数)测量时间,并基于此来调整你的动作。
检查这件事:https://docs.python.org/2/library/time.html#time.struct_time – ZdaR 2015-04-01 11:45:42
无论语言如何,您都需要一个实时操作系统来保证速度不变。或者,这取决于您的测量需要多么可靠,因为运行在通用操作系统上的程序大部分时间都是恒定的速度,但并不总是也没有保证。 – nos 2015-04-01 11:49:05