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

Python多线程访问同一串口的冲突解决及优化方案问询

串口多线程访问冲突问题及优化尝试

问题场景

我有一块热板连接在COM口上,Python程序中的线程A持续从该串口查询数据(发送指令给热板并等待响应)并进行实时绘图,主线程则需要随时访问同一串口(仅发送指令)调节温度。若无保护机制,线程A与主线程会发生冲突,导致主线程偶尔出现串口写入错误。

当前临时解决方案

我使用两个全局变量临时暂停线程A,相关代码如下:

主线程代码

stop_plot_heat_flag = 1
while confirm_stop_plot_flag == 0:
    time.sleep(0.1)
Class_heating1.start_heat_each(0,thermal_set)
stop_plot_heat_flag,confirm_stop_plot_flag = 0,0

线程A代码

if  stop_plot_heat_flag == 1: 
    confirm_stop_plot_flag = 1
elif stop_plot_heat_flag == 0:
    inquire_thermal_data()

这段代码可正常运行,但如果有多个线程需要访问同一串口,就会需要大量全局变量,因此希望找到更简洁的处理方式(要求主线程优先)。

更新1:尝试锁机制优化

根据建议,我在两个线程中引入了锁机制:

lock.acquire()
...
lock.release()

目前程序运行正常,我会持续监控稳定性。

更新2:锁机制下的进一步微调

在极少数情况下(已比之前的冲突频率低很多),使用锁后仍会出现冲突。我在lock.acquire()后添加了time.sleep(0.1),正在观察是否能彻底解决问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 21:35:17