You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python线程在join期间遭遇Ctrl+C的行为疑问

Python线程在join期间遭遇Ctrl+C的行为疑问

最近我一直在琢磨一个问题:当主线程正卡在join()方法等待子线程结束时,按下Ctrl+C中断主线程,那子线程会有什么变化?我写了一段简单的测试代码来验证这个场景:

import time, threading

def worker():
    time.sleep(5)
    print("Thread finished")

t = threading.Thread(target=worker)
t.start()
try:
    t.join()
except KeyboardInterrupt:
    print("Interrupted")

按我的理解,如果在子线程睡眠的5秒内按下Ctrl+C,主线程的join()调用应该会触发KeyboardInterrupt异常,然后被except块捕获,打印出"Interrupted"。

之后主线程会走完自己的代码逻辑并退出,但因为这个子线程不是守护线程,Python进程不应该直接终止,得等子线程执行完才会退出。也就是说子线程应该会继续运行,等5秒到了之后打印"Thread finished",这时候Python进程才会真正结束。

我用Python 3实际测试后,观察到的结果和我的预期是一致的,但还是想确认这个行为是不是标准的,有没有什么容易被忽略的细节?

备注:内容来源于stack exchange,提问作者Abraham Murciano Benzadon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 08:15:34