操作系统信号传输延迟1秒(在python线程之间)?
当我用python向线程发送信号时,我遇到了信号传递的1秒延迟 发送线程片段(导入信号和操作系统(以及时间)): 接收线程片段:操作系统信号传输延迟1秒(在python线程之间)?,python,linux,multithreading,debian,signals,Python,Linux,Multithreading,Debian,Signals,当我用python向线程发送信号时,我遇到了信号传递的1秒延迟 发送线程片段(导入信号和操作系统(以及时间)): 接收线程片段: def receive_alarm(signum, stack): print "Signal received at:", time.time() signal.signal(signal.SIGALRM, receive_alarm) 同时运行这两个选项将提供: Signal sent at 1423141616.02 Signal received a
def receive_alarm(signum, stack):
print "Signal received at:", time.time()
signal.signal(signal.SIGALRM, receive_alarm)
同时运行这两个选项将提供:
Signal sent at 1423141616.02
Signal received at: 1423141617.02
因此,发出警报信号需要整整一秒钟的时间。它总是正好是1秒。这次耽搁使我无法使用它。有人知道更多吗?这是什么地方的背景吗?还是我做错了什么?我也试过其他信号
操作系统:Debian7
提前感谢您的帮助
约翰
以下评论后更新:
strace python main.py
没有给这个延迟
python main.py
有:-)。这可能让我们更接近问题所在
- J
poll
它们来传递信号。试着用strace
找出答案。当我扫视它时,延迟消失了(这是个好消息!)!所以这可能是某种环境设置?仍然在寻找:'strace-tttpythonmain.py'提供的延迟很小(小于50ms)。'python main.py'仍然提供完整的秒延迟。是否有类似于sys.stdout.flush()的东西(即将输出缓冲区刷新到屏幕上)可以处理信号?
python main.py