文章詳情頁
多進程 - 3D打印軟件Printrun為何使用了Python最不擅長的多線程方式?
瀏覽:126日期:2022-06-29 14:01:05
問題描述
日前接觸到一個3D打印機的項目,有兩種代碼,一種是開源的Python printrun,另外一種是閉源的C++,兩者均使用的多線程方式。其中C++使用了開源的mlib來實現(xiàn),這我可以理解。
就C++的代碼來看,每種控制器分別控制位置、溫度、噴頭等,對應一個線程。底層通過同一USB/串口/CAN總線來實現(xiàn)的。
我還在查閱printrun使用多線程究竟和C++代碼一樣是實現(xiàn)多個控制器線程,還是只是GUI與串口間的多線程。難道設(shè)計者不擔心Python的GIL影響線程的性能?
此外,我還有兩個選擇:
將C++代碼移植到基于RTOS的方式的驅(qū)動,或RT-Linux等類似平臺上。
將Python改為多進程,而每個串口采用asynio的異步方式處理事件。
希望有過此類經(jīng)驗的同學們傳授一下經(jīng)驗。
問題解答
回答1:io密集型應用不用擔心GIL
相關(guān)文章:
1. android - 分享到微信,如何快速轉(zhuǎn)換成字節(jié)數(shù)組2. javascript - 能否讓vue-cli的express修改express重啟服務3. 解決Android webview設(shè)置cookie和cookie丟失的問題4. angular.js - Beego 與 AngularJS的模板格式?jīng)_突,該怎么解決?5. javascript - vue2.0中,$refs對象為什么用駝峰的方式獲取不到屬性?6. node.js - npm一直提示proxy有問題7. html5 - 有人做過防微信app界面的H5 demo嗎?8. javascript - 有沒有iOS微信中可以在背景播放視頻的方法?9. 最新版本的微信web開發(fā)者工具必須要APPID,會提供測試號,但是像你一樣tabBar配置的話不會顯示首頁與日志,難道我要下載跟你一樣的版本?10. Navicat for mysql 中以json格式儲存的數(shù)據(jù)存在大量反斜杠,如何去除?
排行榜

熱門標簽