Skip to main content
 首页 » 编程设计

python之什么可以使 signal.signal 长时间阻塞

2025年05月04日8tuyile006

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

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

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

请您参考如下方法:

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

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