私は最近 3D プリンター プロジェクトに携わりました。コードは 2 つあり、1 つはオープン ソースの Python printrun、もう 1 つはクローズ ソースの C です。どちらもマルチスレッドを使用します。このうちCはオープンソースのmlibを使って実装しているのは理解できます。
Cコードを見る限り、各コントローラはスレッドに対応して位置、温度、ノズルなどを制御します。最下層は、同じ USB/シリアル ポート/CAN バスを介して実装されます。
printrun がマルチスレッドを使用して C コードのような複数のコントローラー スレッドを実装しているのか、それとも GUI とシリアル ポート間のマルチスレッドなのかをまだ確認中です。設計者は、Python の GIL がスレッドのパフォーマンスに影響を与えることを心配していませんか?
さらに、2 つのオプションがあります:
C コードを、RTOS、RT-Linux、およびその他の同様のプラットフォームに基づくドライバーに移植します。
Python をマルチプロセスに変更し、各シリアル ポートは asynio の非同期メソッドを使用してイベントを処理します。
そのような経験をした学生がその経験を共有できることを願っています。
IO を多用するアプリケーションでは GIL について心配する必要はありません