麻烦维持不断更新率

时间:2012-05-04 17:02:16

标签: python updates

开发一个应该以一致的间隔读取数据的进程。读取数据的时间段因网络而异。我认为这应该是直截了当的,但我永远无法获得一致的时机。寻找更加一致和稳定的系统,以便对网络速度变化做出良好响应。

目前我正在使用

之后的模型
|<--read data-->|<--post process-->|<--sleep x seconds to maintain period-->|
|<------------------------------known data rate---------------------------->|

我的代码有点像

data_rate = 5   # Hz
while 1:
    # read in data
    rd_start = time.time()
    data = getdata()
    rd_stop = time.time()

    # Post processing
    pp_start = time.time()
    rate = 1.0/(rd_start - oldstart) if oldstart else data_rate
    old_start = rd_start
    print rate
    post_process(data)
    pp_stop = time.time()

    sleep_time = 1.0/data_rate - ((rd_stop-rd_start) + (pp_stop-pp_start))
    sleep_time = sleep_time if sleep_time>0 else 0

    time.sleep(sleep_time)

我还有一些逻辑可以改变更新率(data_rate),如果网络遇到这个速度有困难(睡眠时间一直是负数)但是这样做是正常的。

出于某种原因,我的数据速率永远不会一致(当它稳定时,运行速度大约为4.92 Hz)。这种方法也非常不稳定。有什么更好的方法呢?想到了Threading.Timers()吗?

频率的一致偏移是否可能由time.sleep()的错误引起? How accurate is python's time.sleep()?

0 个答案:

没有答案