4 votes

Communication entre deux moteurs Python distincts

L'énoncé du problème est le suivant :

Je travaille avec Abaqus, un programme d'analyse de problèmes mécaniques. C'est essentiellement un interpréteur Python autonome avec ses propres objets, etc. Dans ce programme, j'exécute un script python pour configurer mon analyse (donc ce script peut être modifié). Il contient également une méthode qui doit être exécutée lorsqu'un signal externe est reçu. Ces signaux proviennent du script principal que j'exécute dans mon propre moteur Python.

Pour l'instant, j'ai le flux de travail suivant: Le script principal définit un booléen sur True lorsque le script Abaqus doit exécuter une fonction spécifique, et pickles ce booléen dans un fichier. Le script Abaqus vérifie régulièrement ce fichier pour voir si le booléen a été défini sur vrai. Si c'est le cas, il effectue une analyse et pickles la sortie, de sorte que le script principal puisse lire cette sortie et agir en conséquence.

Je recherche un moyen plus efficace de signaler à l'autre processus de démarrer l'analyse, car il y a beaucoup de vérifications inutiles en cours actuellement. L'échange de données via pickle n'est pas un problème pour moi, mais une solution plus efficace est certainement la bienvenue.

Les résultats de recherche me donnent toujours des solutions avec subprocess ou similaire, qui sont pour deux processus démarrés dans le même interpréteur. J'ai également examiné ZeroMQ car cela est censé réaliser des choses comme cela, mais je pense que c'est exagéré et j'aimerais une solution en python. Les deux interprètes fonctionnent en python 2.7 (bien que différentes versions).

0voto

commonHuman Points 1

Je suis d'accord avec la réponse, sauf pour quelques problèmes de syntaxe mineurs.

définir les variables d'instance à l'intérieur de la gestionnaire est une erreur. Sans parler du fait qu'elles ne sont pas définies dans un type de méthode init(). Sous-classe TCPServer et définissez vos variables d'instance dans TCPServer.init(). Tout le reste fonctionnera de la même manière.

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