python 是否匀速迭代?
Does python iterate at a constant speed?
我写了一些代码来从 GPIO 获取传感器读数与时间的关系。
为确保测量对应于特定时间,我想知道 python 是否以恒定速度迭代(以便迭代之间的间隙恒定) - 以及迭代之间的最小时间间隙是多少。
如果不是,谁能告诉我如何使时间间隔保持不变。
谢谢!
不,Python不会也不能恒速迭代。
Python 只是您 Raspberry PI 上的另一个进程,您的 OS 负责将时间分配给 CPU 上的 运行(称为multi-tasking)。其他进程也得到分配的时间。这意味着 Python 永远不会一直 运行ning,任何处理时间都将取决于其他进程正在做什么。
迭代本身也委托到特定类型;下一个项目的生产方式差异很大,即使 Python 被授予对 CPU 迭代的持续访问权,仍然会有所不同。无论您在 循环主体 中做什么都需要时间,除非输入和输出始终完全相同,否则几乎肯定会花费不同的时间来完成工作。
与其尝试为循环计时,不如在循环中使用 time.time()
or timeit.default_timer
测量时间(取决于您需要的精确度,在您的 Raspberry 上它是相同的功能)并根据需要调整您的操作
我写了一些代码来从 GPIO 获取传感器读数与时间的关系。 为确保测量对应于特定时间,我想知道 python 是否以恒定速度迭代(以便迭代之间的间隙恒定) - 以及迭代之间的最小时间间隙是多少。
如果不是,谁能告诉我如何使时间间隔保持不变。 谢谢!
不,Python不会也不能恒速迭代。
Python 只是您 Raspberry PI 上的另一个进程,您的 OS 负责将时间分配给 CPU 上的 运行(称为multi-tasking)。其他进程也得到分配的时间。这意味着 Python 永远不会一直 运行ning,任何处理时间都将取决于其他进程正在做什么。
迭代本身也委托到特定类型;下一个项目的生产方式差异很大,即使 Python 被授予对 CPU 迭代的持续访问权,仍然会有所不同。无论您在 循环主体 中做什么都需要时间,除非输入和输出始终完全相同,否则几乎肯定会花费不同的时间来完成工作。
与其尝试为循环计时,不如在循环中使用 time.time()
or timeit.default_timer
测量时间(取决于您需要的精确度,在您的 Raspberry 上它是相同的功能)并根据需要调整您的操作