树莓派+Flask API+多线程场景下,按钮线程循环内变量状态不一致问题求助
树莓派+Flask API+多线程场景下,按钮线程循环内变量状态不一致问题求助
各位大佬好!最近在树莓派上搞闸机控制的项目,卡到一个多线程的问题上了,想请大家帮忙支支招~
先给大家说下我的项目背景:我用Flask写了个API跑在树莓派上,用来控制闸机的伺服电机,还对接了一套人脸识别系统,整体的工作流程是这样的:
- 接收外部人脸识别API传过来的用户识别数据
- 如果系统判定允许通行,就触发伺服电机打开闸机
- 行人通过闸机后按下确认按钮,系统就完成这次通行的确认
现在碰到的麻烦是多线程环境下,按钮监听线程的循环里,变量状态总是和预期对不上。比如我在处理API请求的线程里把access_granted设为True,但按钮线程的循环里读这个变量时,有时候还是False;或者一次通行完成后,变量没被正确重置,导致下一次的通行逻辑直接乱掉。
我单独测试按钮线程的时候逻辑完全正常,但一和Flask的API请求线程一起跑就出问题。试过用全局变量传递状态,也试过把变量封装成类的实例属性,可都没解决这个状态不一致的问题。
另外补充下:如果需要更多代码片段或者上下文细节,我随时可以发上来!还有抱歉哈,我的问题是用AI翻译的,可能英文表述或者代码里会有小错误,大家多担待~
有没有大佬遇到过类似的多线程状态同步问题?或者能给我指个方向,怎么才能保证Flask请求线程和按钮监听线程之间的变量状态是一致的?
备注:内容来源于stack exchange,提问作者Fernando Leão
相关产品推荐
相关产品推荐

