我编写了一些代码来获取GPIO的传感器读数。 为了确保测量结果与特定时间相对应,我想知道python是否以恒定速度迭代(以便迭代之间的间隙是恒定的) - 以及迭代之间的最小时间间隔是多少。
如果他们不是,有人可以告诉我如何使时间间隔保持不变。 谢谢!
答案 0 :(得分:10)
不,Python不能也不能以恒定速度迭代。
Python只是Raspberry PI上的另一个进程,您的操作系统负责分配它在CPU上运行的时间(称为multi-tasking)。其他过程也会分配时间。这意味着Python永远不会一直运行,任何处理时间都将取决于其他进程正在做什么。
迭代本身也委托到特定类型;如何生成下一个项目然后变化很大,即使Python被持续访问CPU迭代仍然会有所不同。无论你在循环体中做什么也需要时间,除非输入和输出总是完全相同,否则几乎肯定需要花费不同的时间来完成工作。
不是试图为你的循环计时,而是用time.time()
或timeit.default_timer
来衡量时间(取决于你需要多精确,在你的覆盆子上,它将是相同的功能)循环并根据它调整你的行动。