我正在为远程调试注册一个信号:
signal.signal(signal.SIGUSR1, lambda x,y: remote_debug(x, y, emp_id))
虽然通常非常快,但日志语句显示此命令(注册)有时需要 5 到 10 秒才能执行。是什么原因造成的?我该如何解决?
请您参考如下方法:
Python 回调代码实际上不会在 Python 中立即调用。 Python 中的 C 代码只是在收到信号时设置一个标志。它只在返回到解释器时运行处理程序。如果您的代码路径当前在已编译代码的扩展模块中工作,则处理程序在完成之前不会运行。
修复它的唯一方法是确保执行路径不会在 C 函数中花费大量时间。您当时正在运行什么功能?另一个罪魁祸首是标准的 time.sleep() 方法。请改用 signal.pause() 。
