最近項目需求計算每5幀的平滑數據速度,想到了用隊列,5個位置的隊列,新來的數擠掉第一個數,隊頭與隊尾運算即可,很久沒用python,遇到了基礎性的問題
使用其他語言,習慣從隊列裏直接取數
q = Queue.queue()
q.add(x)
x = q(4)-q(0)
q.delet(q(0))
類似這種使用隊尾減隊頭,再刪掉隊頭的方法在python下使用下會報錯
AttributeError:Queue instance has no_call__method
網上看了很多資料結果都沒有說到關鍵,修改函數後也沒解決問題,多次嘗試後發現在python中使用入隊用put加到隊尾,出隊使用get從隊頭拿出這個數。不需要再刪除,修改完整個代碼後,再次驗證了python的便捷性,它考慮的更方便,反而是編程習慣讓我想多了
import Queue
x=1
q_x = Queue.Queue(5)
q_time = Queue.Queue(5)
while(1)
q_x.put(x)
q_time.put(time.time())
if q_time.full() == 1
det_time = time.time() - q_time.get()
v = (x- q_x.get()) / det_time
print(v)
x = x + 1