2014-05-24 45 views
2

我在python中製作了一個雷達,我想要做的就是讓每一個檢測到的點(繪製在地圖上)都被刪除,比方說2秒。我是Python的初學者,所以我可能不是這樣做的最好方式。我正在使用Signal模塊將「處理程序」功能附加到信號上,該信號每隔2秒後將作爲一箇中斷工作,並說應該刪除圖上「最早的」檢測點。我不確定如何刪除已繪製的點,所以我只是通過繪製相同點但以背景顏色對它進行「着色」:/ 我在「點」列表中查找了我的檢測點。如何在Python中添加處理程序和信號?

def handler(): 
     if 0 != len(points): 
      ax.plot(points[0][0], points[0][1], color='#8DEEEE') 
      points.pop(0) 

#Set the signal handler and a 2-second alarm 
signal.signal(signal.SIGALARM, handler) 
signal.alarm(2) 
+1

'signal.alarm(2)'沒有設置每兩秒發送一次信號的警報,而是兩秒鐘後發出一次警報。但實際上你的問題是什麼? – Pavel

+0

@Pavel是否有一種方法可以讓每秒鐘在Python中調用附加到該函數的'ticker'? –

+1

http://stackoverflow.com/questions/8600161/executing-periodic-actions-in-python – Pavel

回答

1

我會質疑你的架構。信號是主要用於進程間通信的操作系統機制。信號很難糾正,特別是在信號處理器允許你做哪些事情時有很多缺陷。信號在不同平臺上的行爲也不一樣。我相當肯定,對於您的應用程序,您可以找到更適合事件通知的方式。您可能想要使用線程(查看threading模塊)和隊列。