程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python 多線程導致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()

運行結果及報錯內容

單獨運行某一個線程,程序可以持續運行無問題,但是同時打開3個數據采集的線程,開始運行一段時間都沒問題,但是過幾分鐘就會提示“Python已停止工作,由於出現問題,程序停止正常工作,Windows將關閉程序,並會在有可用的解決方案時通知你”

我的解答思路和嘗試過的方法

我的CSV 寫入過程加入了鎖,目前看起來寫入時序是正確的
threadLock = threading.Lock()
threadLock.acquire()
#判斷是哪個數據輸入,寫入csv
threadLock.release()
初步懷疑是線程太多,數據高並發,超出系統內存導致報錯

我想要達到的結果

我做了一個程序框圖,想要咨詢業界同仁,針對我的這個程序框圖,有沒有多線程,高並發,又不容易造成崩潰的多線程框架可以參考


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved