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

Python线程调用后程序仍阻塞等待执行完成的问题排查

Python线程调用后程序仍阻塞等待执行完成的问题排查

嘿,我一眼就发现问题所在了!你线程启动的写法有个关键错误,导致根本没实现异步执行的效果。

看你代码里这一行:

threading.Thread(target=inicia_thread()).start()

你这里写的inicia_thread()是直接调用了函数,而不是把函数本身作为线程的目标任务。这就意味着,在创建线程之前,程序会先同步执行完inicia_thread()里的record.RecordDataCar(),等这个耗时的文件写入操作完全结束后,才会继续创建线程——但这时候线程的target已经是inicia_thread()执行后的返回值(通常是None),线程启动后其实什么都不会做,完全没起到异步的作用。

修正方法很简单:

把函数调用的括号去掉,直接传入函数对象给target参数:

threading.Thread(target=inicia_thread).start()

这样一来,线程会在启动后才去执行inicia_thread函数,主程序就不会被阻塞,可以继续往下处理其他逻辑了。

另外补充个小提醒:如果之后你的inicia_thread需要接收参数,别直接在括号里传参,要通过线程的args或kwargs参数来传递,比如:

# 假设inicia_thread需要两个参数a和b
threading.Thread(target=inicia_thread, args=(a, b)).start()

最后再检查下,你代码里的record.RecordData(file_name='historico_PLA', data=data_meb)是同步调用的,如果这个文件写入操作也比较耗时,那这部分也会阻塞主程序,如果需要这部分也异步的话,同样可以把它放到另一个线程里执行。

备注:内容来源于stack exchange,提问作者Angelo Moura

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 15:37:58