Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
操作系统信号传输延迟1秒(在python线程之间)?_Python_Linux_Multithreading_Debian_Signals - Fatal编程技术网

操作系统信号传输延迟1秒(在python线程之间)?

操作系统信号传输延迟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

当我用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 at: 1423141617.02
因此,发出警报信号需要整整一秒钟的时间。它总是正好是1秒。这次耽搁使我无法使用它。有人知道更多吗?这是什么地方的背景吗?还是我做错了什么?我也试过其他信号

操作系统:Debian7

提前感谢您的帮助

约翰

以下评论后更新:

strace python main.py
没有给这个延迟

python main.py
有:-)。这可能让我们更接近问题所在

  • J

我相信它是特定于Python的。使用纯C代码,你不会有一秒钟的延迟。啊,这是有用的信息。但发送方(os.kill)或接收方(signal.signal)都有内置的1s延迟,这似乎很奇怪。我会尽快调查(可能需要48小时左右,我很忙)。同时,我们也高度赞赏其他关于这是python特有的想法/修复/确认。盲目猜测:python将使用管道和
poll
它们来传递信号。试着用
strace
找出答案。当我扫视它时,延迟消失了(这是个好消息!)!所以这可能是某种环境设置?仍然在寻找:'strace-tttpythonmain.py'提供的延迟很小(小于50ms)。'python main.py'仍然提供完整的秒延迟。是否有类似于sys.stdout.flush()的东西(即将输出缓冲区刷新到屏幕上)可以处理信号?
python main.py