J'utilise une bibliothèque qui fournit une interface python à un programme externe. Cela me permet de créer: Le code ci-dessus commence une nouvelle instance du programme FOO que je peux contrôler à partir de Python. P> J'ai des scripts python qui ont besoin Pour être invoqué plusieurs fois et en fonction des paramètres externes, indiquez une seule instance du programme FOO externe de faire différentes choses. Évident je ne peux pas faire p> car cela crée une nouvelle instance de foo à chaque fois que mon script est exécuté. p> Ce que je veux faire est de créer merci !! p> p> foo = foo () code> chaque fois, p>
foo = foo () code> une fois et que plusieurs invocations partagent la même instance. Actuellement, je pense que je ne fais que la créer une fois, le sérialiser et que mes scripts le désérialisent. Cette approche fonctionne-t-elle? Y a-t-il une meilleure alternative? P>
3 Réponses :
Vous pourriez peut-être utiliser Pickle . Voici un exemple simple:
J'ai essayé de faire ça en fait, j'ai eu un message disant "Impossible de griller" verrouillage "objet:
Oui, il a des limitations que vous pouvez / ne pas être en mesure de contourner ce que vous voulez: docs.python.org/library/...
Si vous utilisez une serrure, vous devez probablement prendre un autre chemin comme des sockets ou des tuyaux pour fournir un accès verrouillé à votre classe.
Vous pouvez modifier la conception de sorte que foo () code> vous connecte simplement à un processus existant, puis vous créez une nouvelle fonction, appelez-le
startfoo () code> que vous Appelez précédemment une fois (ou si
foo () code> échoue). Encore mieux serait de faire le programme que FOO () se connecte à un service que vous connectez sur une prise. Vous voudrez peut-être aussi simplement passer au module multiprofessionnel. p>
Oui, je pense que c'est ce que je vais devoir voir comme je ne peux pas facilement sérialiser l'objet FOO.