我正在尝试通过使用matplotlib.animation每秒更新一次时间序列数据。这将用于从多个通道进行数据采集。但是,当我在update()函数中使用动画时,没有达到间隔时间(这些函数循环更快)。请帮助我阐明如何以更适当的方式调用更新函数。谢谢。
大多数示例显示从函数外部调用update()。但是,在这种情况下,一次更新多个频道成为问题。
def update(self,start):
x = np.random.normal(size=1)
y = np.random.normal(size=1)
deneme=self.graphicsView.plot(x,y,pen=None,symbol='+')
time.sleep(0.2)
animation.FuncAnimation(self.graphicsView,ui.update(),interval =1000)
答案 0 :(得分:0)
尝试:
from datetime import time
second = datetime.now().strftime("%S")
while True:
do some things your code should do (no time.sleep in there)
second_before = datetime.now().strftime("%S")
if second != second_before:
second = second_before
call the function
答案 1 :(得分:0)
我发现了以下一种方法。使用thrading.Timer似乎可以正常工作。现在,我正在通过检查过程持续时间来确保间隔的准确性。
def callfunc(self,val):
process_delta=time.time()-val
t=threading.Timer(1-process_delta,Ui_Dialog.update,args=(self,))
t.daemon=True
t.start()
def update(self):
process_start=time.time()
value1=[]
deltatime1=[]
deltatime1.append(time.time()-start)
y = np.random.normal(size=1)
deneme=self.graphicsView.plot(deltatime1,y,pen=None,symbol='+')
QtCore.QCoreApplication.processEvents()
self.callfunc(process_start)
start=time.time()
ui.callfunc(0)