최근 3D 프린터 프로젝트를 접했습니다. 두 가지 코드가 있습니다. 하나는 오픈 소스 Python printrun이고 다른 하나는 폐쇄 소스 C++이며 둘 다 멀티 스레딩을 사용합니다. C++에서는 이를 구현하기 위해 오픈 소스 mlib를 사용하는데, 이는 이해할 수 있습니다.
C++ 코드의 경우 각 컨트롤러는 스레드에 해당하는 위치, 온도, 노즐 등을 제어합니다. 하단 레이어는 동일한 USB/직렬 포트/CAN 버스를 통해 구현됩니다.
printrun이 C++ 코드와 같은 여러 컨트롤러 스레드를 구현하기 위해 멀티스레딩을 사용하는지, 아니면 단지 GUI와 직렬 포트 사이에서 멀티스레딩을 사용하는지 계속 확인 중입니다. 디자이너는 Python의 GIL이 스레드 성능에 영향을 미치는 것에 대해 걱정하지 않습니까?
또한 두 가지 옵션이 있습니다.
C++ 코드를 RTOS, RT-Linux 및 기타 유사한 플랫폼 기반 드라이버로 포팅하세요.
Python을 다중 프로세스로 변경하면 각 직렬 포트는 asynio의 비동기 방식을 사용하여 이벤트를 처리합니다.
이런 경험이 있는 학생들이 경험을 공유할 수 있기를 바랍니다.