文章詳情頁(yè)
多進(jìn)程 - 3D打印軟件Printrun為何使用了Python最不擅長(zhǎng)的多線程方式?
瀏覽:165日期:2022-06-29 14:01:05
問(wèn)題描述
日前接觸到一個(gè)3D打印機(jī)的項(xiàng)目,有兩種代碼,一種是開源的Python printrun,另外一種是閉源的C++,兩者均使用的多線程方式。其中C++使用了開源的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. 在應(yīng)用配置文件 app.php 中找不到’route_check_cache’配置項(xiàng)2. html按鍵開關(guān)如何提交我想需要的值到數(shù)據(jù)庫(kù)3. HTML 5輸入框只能輸入漢字、字母、數(shù)字、標(biāo)點(diǎn)符號(hào)?正則如何寫?4. javascript - 請(qǐng)教如何獲取百度貼吧新增的兩個(gè)加密參數(shù)5. Android中能不能判斷一個(gè)數(shù)據(jù)庫(kù)是create來(lái)的,還是open來(lái)的?6. gvim - 誰(shuí)有vim里CSS的Indent文件, 能縮進(jìn)@media里面的7. 跟著課件一模一樣的操作使用tp6,出現(xiàn)了錯(cuò)誤8. PHP類屬性聲明?9. javascript - 求助canvas繪制馬賽克的問(wèn)題,老是取色不準(zhǔn)10. java - 安卓接入微信登錄,onCreate不會(huì)執(zhí)行
排行榜

熱門標(biāo)簽