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

Python 3.6.5启动后台线程后主线程阻塞问题求助

问题分析与解决

哦,我一眼就发现问题所在了!你的代码在创建线程时犯了一个非常典型的错误,直接导致主线程被卡死在后台线程的调用里,根本没机会执行后面的代码。

错误原因

你写的线程创建代码是这样的:

threading.Thread(bgthread()).start()

这里的bgthread()是直接调用了这个函数,而不是把函数对象传给线程的target参数。因为bgthread()里面是一个while True的死循环,所以程序一运行就会进入这个死循环,永远停在这里,完全到不了下面打印FG works的代码块。

修正后的代码

只需要把线程创建的方式改对,把函数对象传给target参数即可:

import sys
import time
import threading

def bgthread():
    while True:
        print('BG works')
        sys.stdout.flush()
        time.sleep(1)

# 正确的线程创建方式:传入函数对象给target参数
threading.Thread(target=bgthread).start()

while True:
    print('FG works')
    sys.stdout.flush()
    time.sleep(1)

额外建议

如果希望主线程退出时后台线程也能自动结束,可以给线程设置daemon=True,这样主线程结束后,后台线程会被强制终止:

threading.Thread(target=bgthread, daemon=True).start()

这样修改后,后台线程和主线程就会并行运行,你就能同时看到BG works和FG works的输出啦!

内容的提问来源于stack exchange,提问作者gamesguru

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:46:16