如何在Python中添加处理程序和信号?

时间:2014-05-24 13:42:02

标签: python signals handler

我正在用python制作一个雷达,我想要做的是让所有检测到的点(在地图上绘制)删除,比方说,2秒。我是Python的初学者,所以我可能不是最好的方式。我正在使用信号模块将“处理程序”功能附加到每2秒后作为中断工作的信号,并说应该删除图上“最老的”检测点。我不确定如何删除绘制的点,所以我只是通过绘制相同的点而不是背景的颜色来“着色”它: 我将检测到的点放在“点”列表中。

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 个答案:

答案 0 :(得分:1)

我会质疑你的架构。信号是一种主要用于进程间通信的操作系统机制。信号难以正确,存在很多陷阱,特别是在信号处理程序中允许您执行哪些操作时。信号在不同平台上的行为也不一样。我非常确定您的应用程序可以找到更合适的事件通知方式。您可能希望使用线程(查看threading模块)和队列。