gpt4 book ai didi

Python 主线程中断

转载 作者:太空狗 更新时间:2023-10-30 02:32:18 24 4
gpt4 key购买 nike

谁能解释一下 interrupt_main() 方法在 Python 中是如何工作的?

我有这段 Python 代码:

import time, thread

def f():
time.sleep(5)
thread.interrupt_main()

def g():
thread.start_new_thread(f, ())
time.sleep(10)
print time.time()
try:
g()
except KeyboardInterrupt:
print time.time()

当我尝试运行它时,它会给我以下输出:

1380542215.5
# ... 10 seconds break...
1380542225.51

但是,如果我手动中断程序(CTRL-C),线程会被正确中断:

1380542357.58
^C1380542361.49

为什么在第一个示例中线程中断仅在 10 秒(而不是 5 秒)后发生?

我找到了一个 ancient thread n Python mailing list ,但它几乎没有解释任何东西。

最佳答案

raise KeyboardInterrupt 不会中断 time.sleep()。前者完全在 python 解释器内部处理,后者调用操作系统函数。

因此,在您的情况下,键盘中断已得到处理,但仅当 time.sleep() 完成其系统调用时。

试试这个:

def g():
thread.start_new_thread(f, ())
for _ in range(10):
time.sleep(1)

关于Python 主线程中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19093899/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com