2016-05-29 84 views
-1

我有一個相當簡單的python腳本,不斷輪詢互聯網來源的新數據。當找到新數據時,將其寫入多個i2c 4個字母字母數字顯示中的一個。應該/我該如何使用線程來改進Python腳本?

問題是,連續滾動顯示屏上信息的代碼需要連續循環。只需調用一個函數來寫入顯示器然後回到輪詢新數據就簡單多了。目前我必須將屏幕寫入主數據收集循環。

這裏是我寫顯示:

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) ` 

我有哪些選擇?我應該使用線程還是有另一種可中斷後臺循環的方式?

回答

1

您可以使用異步/事件驅動的框架,如支持定時器的Twisted:http://www.saltycrane.com/blog/2008/10/running-functions-periodically-using-twisteds-loopingcall/ - 這將所有內容保留在一個線程中,並且它爲您提供異步API以便執行HTTP GET,因此,如果您的數據源響應緩慢。

+0

仍然意味着我必須保持顯示循環與主,正確?因爲我有多個顯示器,我真的很想將顯示邏輯從數據中分離出來。 – genepool99

+0

@genepool99:不,您會在主線程中執行* everything *,但可以將邏輯放入由Twisted中的Timer調用的函數中。 –

相關問題