搜尋

首頁  >  問答  >  主體

多重進程 - 3D列印軟體Printrun為何使用了Python最不擅長的多執行緒方式?

日前接觸到一個3D列印機的項目,有兩種程式碼,一個是開源的Python printrun,另一個是閉源的C ,兩者皆使用的多執行緒方式。其中C 使用了開源的mlib來實現,這我可以理解。

就C 的程式碼來看,每個控制器分別控制位置、溫度、噴頭等,對應一個執行緒。底層透過同一USB/串列埠/CAN總線來實現的。

我還在查閱printrun使用多線程究竟和C 程式碼一樣是實作多個控制器線程,還是只是GUI與串口間的多線程。難道設計者不擔心Python的GIL會影響執行緒的效能?

此外,我還有兩個選擇:

  1. 將C 程式碼移植到基於RTOS的方式的驅動,或RT-Linux等類似平台上。

  2. 將Python改為多進程,而每個串列口採用asynio的非同步方式處理事件。

希望有過這類經驗的同學們傳授一下經驗。

天蓬老师天蓬老师2723 天前869

全部回覆(1)我來回復

  • 扔个三星炸死你

    扔个三星炸死你2017-06-12 09:25:41

    io密集型應用不用擔心GIL

    回覆
    0
  • 取消回覆