文章詳情頁(yè)
多進(jìn)程 - 3D打印軟件Printrun為何使用了Python最不擅長(zhǎng)的多線程方式?
瀏覽:225日期:2022-06-29 14:01:05
問題描述
日前接觸到一個(gè)3D打印機(jī)的項(xiàng)目,有兩種代碼,一種是開源的Python printrun,另外一種是閉源的C++,兩者均使用的多線程方式。其中C++使用了開源的mlib來(lái)實(shí)現(xiàn),這我可以理解。
就C++的代碼來(lái)看,每種控制器分別控制位置、溫度、噴頭等,對(duì)應(yīng)一個(gè)線程。底層通過同一USB/串口/CAN總線來(lái)實(shí)現(xiàn)的。
我還在查閱printrun使用多線程究竟和C++代碼一樣是實(shí)現(xiàn)多個(gè)控制器線程,還是只是GUI與串口間的多線程。難道設(shè)計(jì)者不擔(dān)心Python的GIL影響線程的性能?
此外,我還有兩個(gè)選擇:
將C++代碼移植到基于RTOS的方式的驅(qū)動(dòng),或RT-Linux等類似平臺(tái)上。
將Python改為多進(jìn)程,而每個(gè)串口采用asynio的異步方式處理事件。
希望有過此類經(jīng)驗(yàn)的同學(xué)們傳授一下經(jīng)驗(yàn)。
問題解答
回答1:io密集型應(yīng)用不用擔(dān)心GIL
相關(guān)文章:
1. golang - 用IDE看docker源碼時(shí)的小問題2. docker安裝后出現(xiàn)Cannot connect to the Docker daemon.3. 在windows下安裝docker Toolbox 啟動(dòng)Docker Quickstart Terminal 失敗!4. docker-machine添加一個(gè)已有的docker主機(jī)問題5. Docker for Mac 創(chuàng)建的dnsmasq容器連不上/不工作的問題6. docker-compose中volumes的問題7. 我在centos容器里安裝docker,也就是在容器里安裝容器,報(bào)錯(cuò)了?8. 為什么我ping不通我的docker容器呢???9. docker容器呢SSH為什么連不通呢?10. docker不顯示端口映射呢?
排行榜

熱門標(biāo)簽
網(wǎng)公網(wǎng)安備