文章詳情頁(yè)
多進(jìn)程 - 3D打印軟件Printrun為何使用了Python最不擅長(zhǎng)的多線程方式?
瀏覽:169日期:2022-06-29 14:01:05
問(wèn)題描述
日前接觸到一個(gè)3D打印機(jī)的項(xiàng)目,有兩種代碼,一種是開(kāi)源的Python printrun,另外一種是閉源的C++,兩者均使用的多線程方式。其中C++使用了開(kāi)源的mlib來(lái)實(shí)現(xiàn),這我可以理解。
就C++的代碼來(lái)看,每種控制器分別控制位置、溫度、噴頭等,對(duì)應(yīng)一個(gè)線程。底層通過(guò)同一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的異步方式處理事件。
希望有過(guò)此類經(jīng)驗(yàn)的同學(xué)們傳授一下經(jīng)驗(yàn)。
問(wèn)題解答
回答1:io密集型應(yīng)用不用擔(dān)心GIL
相關(guān)文章:
1. android - 美團(tuán)篩選處篩選條件停靠+條件點(diǎn)擊滑動(dòng)到頂部。2. list - python 求助3. python3.x - python3.5使用pyinstaller打包報(bào)錯(cuò)找不到libpython3.5mu.so.1.0等文件求解?4. python算法,如何優(yōu)雅的合并2個(gè)列表字典?5. python - def自定義函數(shù)的疑惑6. 請(qǐng)教: 關(guān)于 python 反斜杠轉(zhuǎn)義的疑問(wèn)7. mysql優(yōu)化 - mysql like語(yǔ)句會(huì)導(dǎo)致全表掃描?8. javascript 如何下載一個(gè)excel文件 ?9. Python中, 仿照經(jīng)典代碼實(shí)現(xiàn)單例, 卻出現(xiàn)了不是單例的的狀態(tài), 代碼哪里出錯(cuò)了 ?10. php由5.3升級(jí)到5.6后,登錄網(wǎng)站,返回的是php代碼,不是登錄界面,各位大神有知道的嗎?
排行榜

熱門標(biāo)簽