Python 正确执行预定义的循环时间

Python 正确执行预定义的循环时间,python,python-2.7,infinite-loop,frequency,Python,Python 2.7,Infinite Loop,Frequency,我试图通过采集卡以精确的频率测量电压,但我找不到有效的工具来强制我的回路以该频率运行 现在我有这样的东西: import time def get_data(frequency): last_t=time.time() while True: while (time.time()-last_t)<(1./frequency): # waiting loop time.sleep(1./(100*frequency)) # wait fo

我试图通过采集卡以精确的频率测量电压,但我找不到有效的工具来强制我的回路以该频率运行

现在我有这样的东西:

import time

def get_data(frequency):
    last_t=time.time()
    while True:
       while (time.time()-last_t)<(1./frequency): # waiting loop
           time.sleep(1./(100*frequency)) # wait for 1/100 of the desired loop time
       last_t=time.time()
       data=sensor.acquire()
       # do stuff with the data
导入时间
def get_数据(频率):
last_t=time.time()
尽管如此:

while(time.time()-last)你为什么睡这么小的觉?只需等待经期,不要小睡片刻。您的采集卡是哪种硬件?尝试将其包含在
select
循环中。看,我不知道每个循环需要等待多少时间,因为数据处理时间不是恒定的。我做了这个小睡眠,这样我就可以限制CPU的使用而不会睡过头(但我知道这并不理想)。我的采集卡是usb dux sigma,能够采集8kHz。我刚看了一下您的
select
解决方案,但对于我的应用程序来说,它似乎太“慢”。我知道我在这种频率的计算机上所能做的事情已经到了极限,但我只是想知道是否有人有办法改进它。8KHz根本不是一个极限。。。你不能用缓冲来分离数据采集和数据处理吗?e、 g在线程中进行数据采集,并用数据填充队列,让数据处理从队列中获取数据顺便问一下,为什么您认为使用
选择
看起来太慢了?你能试一试吗?还是只是一种假设?