45 votes

Comparaison de la bibliothèque de liaison Python/C++

J'ai l'impression que cette question fait double emploi, mais je n'en ai pas encore trouvé une sur le sujet (spécifiquement), alors je la pose quand même :

Quelles bibliothèques de liaison Python/C++ recommanderiez-vous et pourquoi ? En outre, quelle a été votre expérience en l'utilisant ou en utilisant toute autre bibliothèque que vous avez essayée ? De plus, quelles fonctions de liaison contiennent-elles et l'utilisation que vous en faites est-elle personnelle ou professionnelle ?

Pour commencer, en voici quelques-unes que j'ai essayées récemment (pour un usage personnel) :

SWIG

  • Prise en charge de Python 2 et 3
  • Peut être ultra-automatique dans les bonnes circonstances.
  • Lorsqu'il n'est pas ultra-automatique, il consiste principalement à répéter vos fichiers .h et à fournir des indications.
  • Prise en charge de nombreux autres langages que Python (Java, Ruby, Lua, etc.)
  • La sortie consiste en un fichier natif (à compiler dans un .pyd) et un "wrapper" python.
  • Les fixations semblent être raisonnablement maigres.
  • Ne semble pas supporter les propriétés (valeurs accessibles par getter/setters)
  • Très bien documenté, instructions d'installation faciles à suivre.
  • Utilisé par Google (hé, ça doit compter pour QUELQUE CHOSE, non ?)

Boost::Python

  • Support de Python 2 et 3
  • La syntaxe peut s'avérer gênante pour les nouveaux venus, mais elle est simple et peu encombrante.
  • Utilisation intensive des templates C++ (peut être une bonne ou une mauvaise chose)
  • Distribué en tant que partie de la bibliothèque Boost, qui est énorme. (Utile, mais énorme)
  • La compilation initiale de la bibliothèque peut être un exercice de frustration.
  • Peut augmenter considérablement les temps de compilation
  • Quelques bizarreries, comme la spécification des politiques de valeur de retour pour les fonctions qui renvoient des types natifs.
  • Bibliothèque très solide, stable et bien testée
  • Prend en charge les propriétés
  • La documentation est moyenne. Des tutoriels d'introduction décents, mais l'utilisation plus avancée est quelque peu négligée. La documentation est également fragmentée : Il existe au moins trois tutoriels différents sur la façon de construire la bibliothèque, tous très différents les uns des autres.
  • Les fixations ont la réputation d'être quelque peu gonflées.

J'utilise actuellement Boost::Python, principalement parce que j'ai vraiment besoin du support des propriétés, mais je suis très curieux de voir ce que les gens pensent de certaines autres bibliothèques !

1voto

hren Points 1

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X