Apache Thrift peut être un meilleur ajustement pour vous, qui est un protocole de communication binaire développé par Facebook pour divers langages de programmation communs, y compris C++, Java, Python, Ruby ... etc (voici wiki page pour plus de détails).
Vous pouvez également être intéressé par la question suivante posée dans Stackoverflow, Thrift client-server multiple roles, qui inclut la façon dont le client appelle une fonction dans le serveur.
EDIT: Comme Thrift ne supporte que les types primitifs communs, struct, et trois types de conteneurs (liste <t1>, mis <t1>, carte < t1, t2 >), vous devez travailler avec des pointeurs. Une façon de travailler avec est d'utiliser id à la carte d'instance. Par exemple, vous pouvez attribuer un identifiant unique à chaque noeud et utiliser id pour faire référence aux noeuds gauche et droit, et avoir un mappage int pour noeud pour récupérer les noeuds par id. Voici comment le fichier .thrift de votre struct noeud pourrait ressembler à:
struct Node {
// a thrift struct is composed of fields;
// each field has a unique integer identifier, a type, a name and an optional default value.
1: required i32 nodeId;
2: required i32 infoId;
3: required i32 leftNodeId;
4: required i32 rightNodeId;
}
Pour la fonction (s) vous en C et souhaitez appeler de python, vous devez les emballer dans un service d'épargne. Voici le service de votre fonction pourrait ressembler (désolé, je ne savais pas l'interface de votre fonction au moment où j'éditais cette réponse):
service TreeStructureService {
void processTreeNode(1: Node node);
}
Si vous souhaitez en savoir plus sur Thrift, vous pourrait trouver Thrift: The Missing Guide utile.
ctypes est un bon moyen de le faire –
Je n'ai jamais travaillé avec. Je l'essaie maintenant. Je souhaite voir si j'ai une meilleure solution, et voir un code minimal qui fait la reconstruction d'un arbre ... – alinsoar
Ne commencez pas à apprendre des ctypes en construisant des arbres. C'est comme apprendre à piloter des chasseurs à réaction avant de faire du vélo. Développez vos compétences petit à petit. –