2014-05-24 40 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模块)和队列。