Python:线程和键盘中断
给定以下代码(在Linux下运行) 程序运行时键入Python:线程和键盘中断,python,multithreading,Python,Multithreading,给定以下代码(在Linux下运行) 程序运行时键入^C不会生成键盘中断: python example.py ^C^C^C^C^C^C^C^C^C 将任何值的超时添加到t.join()会更改此行为。换言之,如果我有: t.join(86400) 然后我看到(无需等待86400秒): 这是怎么回事?我假设在第一种情况下,join操作锁定GIL并阻止任何信号处理程序运行,但是为什么添加任何超时会改变这种行为呢 我花了一点时间浏览代码,当我在Modules/\u threadmodule.c的某
^C
不会生成键盘中断
:
python example.py
^C^C^C^C^C^C^C^C^C
将任何值的超时添加到t.join()
会更改此行为。换言之,如果我有:
t.join(86400)
然后我看到(无需等待86400秒):
这是怎么回事?我假设在第一种情况下,join
操作锁定GIL并阻止任何信号处理程序运行,但是为什么添加任何超时会改变这种行为呢
我花了一点时间浏览代码,当我在
Modules/\u threadmodule.c
的某个地方迷路时,无论是否指定了超时,似乎都遵循了相同的代码路径。这里也有同样的问题:。在评论中,有人建议可以从睡眠中休息,但不能从其他系统阻塞调用中休息。您正在运行windows&unix/linux吗?我正在linux下运行。我更新了问题,使之明确。很抱歉。
t.join(86400)
$ python example.py
^Cinterrupt!
quitting