每X分钟运行一个函数 - Python
我正在使用Python和PyGTK,想要每隔几分钟运行一个函数,这个函数从串口获取数据并保存。
目前,我在使用时间库里的sleep()函数。为了能进行处理,我把系统设置成这样:
import time
waittime = 300 # 5 minutes
while(1):
time1 = time.time()
readserial() # Read data from serial port
processing() # Do stuff with serial data, including dumping it to a file
time2 = time.time()
processingtime = time2 - time1
sleeptime = waittime - processingtime
time.sleep(sleeptime)
这个设置让我每5分钟从串口读取一次数据。我的问题是,我希望readserial()这个函数能在每5分钟暂停其他正在进行的事情,而不是一直用time.sleep()函数。
有没有什么建议可以解决这个问题?多线程?中断?请记住,我是在用Python。
谢谢。
4 个回答
5
gtk.timeout_add这个函数好像已经不再推荐使用了,所以你应该用下面这个替代的方法:
def my_timer(*args):
# Do your work here
return True
gobject.timeout_add( 60*1000, my_timer )
23
不要用这种带有睡眠(sleep)的循环,因为这样会让gtk无法处理任何用户界面的事件。相反,应该使用gtk的定时器,比如:
def my_timer(*args):
return True# do ur work here, but not for long
gtk.timeout_add(60*1000, my_timer) # call every min