我正在为远程调试注册一个信号:
signal.signal(signal.SIGUSR1,lambda x,y: remote_debug(x,y,emp_id))
虽然通常非常快,但日志语句显示此命令(register)有时需要5到10秒才能执行。是什么导致了这种情况?我怎么才能修复它?
发布于 2012-03-30 16:32:52
Python回调代码实际上并不是在Python中立即调用的。Python中的C代码只是在收到信号时设置一个标志。它只在返回到解释器时才运行处理程序。如果您的代码路径当前在已编译代码中的扩展模块中工作,则处理程序在完成之前不会运行。
解决这个问题的唯一方法是确保执行路径不会在C函数中花费太多时间。您当时运行的是什么函数?另一个罪魁祸首是标准的time.sleep()方法。请改用signal.pause()。
https://stackoverflow.com/questions/9938238
复制相似问题