文章詳情頁
多進程 - 3D打印軟件Printrun為何使用了Python最不擅長的多線程方式?
瀏覽:123日期:2022-06-29 14:01:05
問題描述
日前接觸到一個3D打印機的項目,有兩種代碼,一種是開源的Python printrun,另外一種是閉源的C++,兩者均使用的多線程方式。其中C++使用了開源的mlib來實現,這我可以理解。
就C++的代碼來看,每種控制器分別控制位置、溫度、噴頭等,對應一個線程。底層通過同一USB/串口/CAN總線來實現的。
我還在查閱printrun使用多線程究竟和C++代碼一樣是實現多個控制器線程,還是只是GUI與串口間的多線程。難道設計者不擔心Python的GIL影響線程的性能?
此外,我還有兩個選擇:
將C++代碼移植到基于RTOS的方式的驅動,或RT-Linux等類似平臺上。
將Python改為多進程,而每個串口采用asynio的異步方式處理事件。
希望有過此類經驗的同學們傳授一下經驗。
問題解答
回答1:io密集型應用不用擔心GIL
相關文章:
1. 網頁爬蟲 - Python 爬蟲中如何處理驗證碼?2. css3 - 微信前端頁面遇到的transition過渡動畫的bug3. javascript - 請教如何獲取百度貼吧新增的兩個加密參數4. Python如何播放還存在StringIO中的MP3?5. Python爬蟲如何爬取span和span中間的內容并分別存入字典里?6. (python)關于如何做到按win+R再輸入文件文件名就可以運行?7. python - Win7調用flup報錯’module’ object has no attribute ’fromfd’8. mysql - 分庫分表、分區、讀寫分離 這些都是用在什么場景下 ,會帶來哪些效率或者其他方面的好處9. mysql 一個sql 返回多個總數10. mysql - 如何減少使用或者不用LEFT JOIN查詢?
排行榜
