Python 做了一個程序,功能是接收GPS數據,CAN數據與影像數據,界面顯示GPS點,CAN數據實時刷新和影像實時顯示,同時三個數據寫入到後台csv文件中,由於各數據之間相互獨立,所以GPS接收與解析我創建了一個線程,CAN數據接收與發送各創建了一個線程,影像解析創建了一個線程,然後各數據都是通過signal.emit自定義信號發出給csv寫入線程進行寫入的。
CANRecThread = threading.Thread(target=self.CANReceiveData)
#創建守護進程
CANRecThread.setDaemon(True)
CANRecThread.start()
單獨運行某一個線程,程序可以持續運行無問題,但是同時打開3個數據采集的線程,開始運行一段時間都沒問題,但是過幾分鐘就會提示“Python已停止工作,由於出現問題,程序停止正常工作,Windows將關閉程序,並會在有可用的解決方案時通知你”
我的CSV 寫入過程加入了鎖,目前看起來寫入時序是正確的
threadLock = threading.Lock()
threadLock.acquire()
#判斷是哪個數據輸入,寫入csv
threadLock.release()
初步懷疑是線程太多,數據高並發,超出系統內存導致報錯
我做了一個程序框圖,想要咨詢業界同仁,針對我的這個程序框圖,有沒有多線程,高並發,又不容易造成崩潰的多線程框架可以參考