我有一个相当简单的python脚本,不断轮询互联网资源以获取新数据。当找到新数据时,它会将其写入多个i2c 4字符字母数字显示中的一个。
问题是连续滚动显示信息的代码需要连续循环。只需调用函数写入显示然后返回轮询新数据就会简单得多。目前我必须将屏幕写入合并到主数据收集循环中。
以下是我写给显示器的方式:
message = 'DATA: 1234567'
pos = 0
while True:
display.clear()
display.print_str(message[pos:pos+4])
display.write_display()
pos += 1
if pos > len(message)-4:
pos = 0
time.sleep(0.5) `
我有什么选择?我应该使用线程还是有其他方法可以使用可中断的背景循环?
答案 0 :(得分:1)
你可以使用像Twisted这样支持定时器的异步/事件驱动框架:http://www.saltycrane.com/blog/2008/10/running-functions-periodically-using-twisteds-loopingcall/ - 这可以将所有内容保存在一个线程中,并且它为您提供了用于执行HTTP GET的异步API,因此您不会挂起显示您的某个数据源响应缓慢。