web-dev-qa-db-fra.com

Utilisez Cython comme Python to C Converter

J'ai d'énormes modules Python (+8000 lignes). Ils ont essentiellement des tonnes de fonctions pour interagir avec une plate-forme matérielle via le port série en lisant et en écrivant dans les registres matériels.

Ce ne sont pas des algorithmes numériques. Donc, l'application est simplement en train de lire/écrire dans des registres/mémoire matériels. J'utilise ces bibliothèques pour écrire des scripts personnalisés. Finalement, j'ai besoin de déplacer toutes ces choses pour qu'elles soient exécutées dans un processeur intégré sur mon matériel pour avoir un contrôle plus fin, puis je lance l'événement sur PC et le reste est dans le matériel.

J'ai donc besoin de les convertir en C. Si je peux faire convertir mes scripts en C par un outil automatique, cela me ferait gagner beaucoup de temps. C'est pourquoi j'ai été attiré par Cython. L'efficacité n'est pas importante mes codes ne sont pas des calculateurs de nombres. Mais le code généré devrait être relativement petit pour tenir dans ma mémoire limitée (quelques centaines de kilo-octets).

Puis-je utiliser Cython comme convertisseur pour mes scripts personnalisés Python en C? Ma supposition est oui, dans ce cas, puis-je utiliser ces fichiers .c pour les exécuter dans mon matériel? Ma supposition ne l'est pas depuis Je dois également avoir Cython dans mon matériel pour qu'ils s'exécutent. Mais si je crée simplement des fichiers .c, je peux le parcourir et le rendre autonome car le code n'utilise pas beaucoup de fonctionnalités de Python = il suffit de l'utiliser comme un script rapide pour implémenter.

32
user845459
  1. Oui, c'est ce que fait Cython. Mais ...
  2. Vous n'avez pas besoin de Cython, cependant, vous avez besoin de libpython. Vous pouvez avoir l'impression qu'il n'utilise pas autant de fonctionnalités Python, mais je pense que si vous essayez cela, vous constaterez que ce n'est pas vrai - vous ne pourrez pas séparer votre programme de sa dépendance de libpython tout en utilisant le langage Python.

Une autre option est PyPy , en particulier c'est chaîne d'outils de traduction , [~ # ~] pas [~ # ~] l'interpréteur PyPy Python. Il vous permet de traduire RPython , un sous-ensemble du langage Python), en C. Si vous n'utilisez vraiment pas de nombreuses fonctionnalités ou bibliothèques de langage Python, cela peut fonctionner.

PyPy est principalement connu comme une alternative Python, mais c'est aussi un ensemble d'outils pour compiler des langages dynamiques sous diverses formes. C'est ce qui permet l'implémentation PyPy de Python, écrit en (R) Python, à compiler en code machine.

Si C++ est disponible, Nuitka est un Python vers un compilateur C++ qui fonctionne pour Python normal, pas seulement RPython (ce que Shedskin et PyPy utilisent).

40
agf

Si C++ est disponible pour cette plate-forme intégrée, il y a shed skin , il convertit python en c ++).

2
kolen