什么可以使signal.signal阻塞很长一段时间?

时间:2012-03-30 06:50:09

标签: python signals

我正在注册远程调试信号:

signal.signal(signal.SIGUSR1,lambda x,y:remote_debug(x,y,emp_id))

虽然通常非常快,但日志语句显示此命令(寄存器)有时需要5到10秒才能执行。是什么造成的?我该如何解决?

1 个答案:

答案 0 :(得分:0)

Python回调代码实际上并没有立即在Python中调用。 Python中的C代码只是在获取信号时设置一个标志。它只在返回解释器时运行处理程序。如果您的代码路径当前在编译代码中的扩展模块中工作,则处理程序将无法运行直到完成。

解决此问题的唯一方法是确保执行路径不会在C函数中花费大量时间。你当时正在运行什么功能?另一个罪魁祸首是标准的time.sleep()方法。请改用signal.pause()。