Je suis récemment tombé sur un projet d'imprimante 3D. Il existe deux codes, l'un est un printrun Python open source et l'autre est un C++ open source, qui utilisent tous deux le multithreading. C++ utilise le mlib open source pour l'implémenter, ce que je peux comprendre.
En ce qui concerne le code C++, chaque contrôleur contrôle la position, la température, la buse, etc., correspondant à un thread. La couche inférieure est mise en œuvre via le même port USB/série/bus CAN.
Je vérifie toujours si printrun utilise le multi-threading pour implémenter plusieurs threads de contrôleur comme le code C++, ou s'il s'agit simplement du multi-threading entre l'interface graphique et le port série. Les concepteurs ne s'inquiètent-ils pas du fait que le GIL de Python affecte les performances des threads ?
De plus, j'ai deux options :
Portez le code C++ vers un pilote basé sur RTOS, ou RT-Linux et d'autres plates-formes similaires.
Changez Python en multi-processus et chaque port série utilise la méthode asynchrone d'asynio pour gérer les événements.
J'espère que les étudiants qui ont vécu une telle expérience pourront partager leur expérience.
Pas besoin de vous soucier du GIL pour les applications intensives en io