文章詳情頁
多進(jìn)程 - 3D打印軟件Printrun為何使用了Python最不擅長的多線程方式?
瀏覽:159日期:2022-06-29 14:01:05
問題描述
日前接觸到一個3D打印機(jī)的項目,有兩種代碼,一種是開源的Python printrun,另外一種是閉源的C++,兩者均使用的多線程方式。其中C++使用了開源的mlib來實現(xiàn),這我可以理解。
就C++的代碼來看,每種控制器分別控制位置、溫度、噴頭等,對應(yīng)一個線程。底層通過同一USB/串口/CAN總線來實現(xiàn)的。
我還在查閱printrun使用多線程究竟和C++代碼一樣是實現(xiàn)多個控制器線程,還是只是GUI與串口間的多線程。難道設(shè)計者不擔(dān)心Python的GIL影響線程的性能?
此外,我還有兩個選擇:
將C++代碼移植到基于RTOS的方式的驅(qū)動,或RT-Linux等類似平臺上。
將Python改為多進(jìn)程,而每個串口采用asynio的異步方式處理事件。
希望有過此類經(jīng)驗的同學(xué)們傳授一下經(jīng)驗。
問題解答
回答1:io密集型應(yīng)用不用擔(dān)心GIL
相關(guān)文章:
1. 致命錯誤: Class ’appfacadeTest’ not found2. html5 - 如何實現(xiàn)帶陰影的不規(guī)則容器?3. objective-c - iOS開發(fā)支付寶和微信支付完成為什么跳轉(zhuǎn)到了之前開發(fā)的一個app?4. css - 移動端字體設(shè)置問題5. python - 管道符和ssh傳文件6. javascript - 循環(huán)嵌套多個promise應(yīng)該如何實現(xiàn)?7. mysql優(yōu)化 - 關(guān)于mysql分區(qū)8. 請教各位大佬,瀏覽器點(diǎn) 提交實例為什么沒有反應(yīng)9. 前端 - IE9 css兼容問題10. javascript - ionic2 input autofocus 電腦成功,iOS手機(jī)鍵盤不彈出
排行榜

熱門標(biāo)簽