Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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
Python:线程和键盘中断_Python_Multithreading - Fatal编程技术网

Python:线程和键盘中断

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的某

给定以下代码(在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
的某个地方迷路时,无论是否指定了超时,似乎都遵循了相同的代码路径。

这里也有同样的问题:。在评论中,有人建议可以从睡眠中休息,但不能从其他系统阻塞调用中休息。您正在运行windows&unix/linux吗?我正在linux下运行。我更新了问题,使之明确。很抱歉。
t.join(86400)
$ python example.py 
^Cinterrupt!
quitting