寂寞秋风 2022-06-16 10:21 采纳率: 0%
浏览 112
已结题

Python 多线程导致Python已停止工作,由于出现问题,程序停止正常工作

问题遇到的现象和发生背景
    Python 做了一个程序,功能是接收GPS数据,CAN数据与影像数据,界面显示GPS点,CAN数据实时刷新和影像实时显示,同时三个数据写入到后台csv文件中,由于各数据之间相互独立,所以GPS接收与解析我创建了一个线程,CAN数据接收与发送各创建了一个线程,影像解析创建了一个线程,然后各数据都是通过signal.emit自定义信号发出给csv写入线程进行写入的。
问题相关代码,请勿粘贴截图

创建CAN数据接收线程方式

CANRecThread = threading.Thread(target=self.CANReceiveData)
#创建守护进程
CANRecThread.setDaemon(True)
CANRecThread.start()

运行结果及报错内容

img

单独运行某一个线程,程序可以持续运行无问题,但是同时打开3个数据采集的线程,开始运行一段时间都没问题,但是过几分钟就会提示“Python已停止工作,由于出现问题,程序停止正常工作,Windows将关闭程序,并会在有可用的解决方案时通知你”

我的解答思路和尝试过的方法

我的CSV 写入过程加入了锁,目前看起来写入时序是正确的
threadLock = threading.Lock()
threadLock.acquire()
#判断是哪个数据输入,写入csv
threadLock.release()
初步怀疑是线程太多,数据高并发,超出系统内存导致报错

我想要达到的结果

img

我做了一个程序框图,想要咨询业界同仁,针对我的这个程序框图,有没有多线程,高并发,又不容易造成崩溃的多线程框架可以参考

  • 写回答

2条回答 默认 最新

  • 寂寞秋风 2022-06-16 11:31
    关注

    img


    图片补充

    评论

报告相同问题?

问题事件

  • 系统已结题 6月24日
  • 创建了问题 6月16日

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)