问题遇到的现象和发生背景
Python 做了一个程序,功能是接收GPS数据,CAN数据与影像数据,界面显示GPS点,CAN数据实时刷新和影像实时显示,同时三个数据写入到后台csv文件中,由于各数据之间相互独立,所以GPS接收与解析我创建了一个线程,CAN数据接收与发送各创建了一个线程,影像解析创建了一个线程,然后各数据都是通过signal.emit自定义信号发出给csv写入线程进行写入的。
问题相关代码,请勿粘贴截图
创建CAN数据接收线程方式
CANRecThread = threading.Thread(target=self.CANReceiveData)
#创建守护进程
CANRecThread.setDaemon(True)
CANRecThread.start()
运行结果及报错内容
单独运行某一个线程,程序可以持续运行无问题,但是同时打开3个数据采集的线程,开始运行一段时间都没问题,但是过几分钟就会提示“Python已停止工作,由于出现问题,程序停止正常工作,Windows将关闭程序,并会在有可用的解决方案时通知你”
我的解答思路和尝试过的方法
我的CSV 写入过程加入了锁,目前看起来写入时序是正确的
threadLock = threading.Lock()
threadLock.acquire()
#判断是哪个数据输入,写入csv
threadLock.release()
初步怀疑是线程太多,数据高并发,超出系统内存导致报错
我想要达到的结果
我做了一个程序框图,想要咨询业界同仁,针对我的这个程序框图,有没有多线程,高并发,又不容易造成崩溃的多线程框架可以参考