Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1426 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  Communication Inter Processus

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Communication Inter Processus

n°269045
e_esprit
Posté le 13-12-2002 à 14:39:45  profilanswer
 

Quelle est la la manière la plus simple pour etablir une communication inter processus (processus, pas thread !!!), sachant que je souhaite que le code soit aussi bien utilisable sous Unix, que sous Windows... Et si possible autorisant le pasage direct d'objets...
 
J'ai pensé à utiliser des sockets et a communiquer les objets par serialization/deserialization (comme je l'aurais fait en Java), mais malheuresement mes objets ne sont pas serializables (c'est (c)pickle qui me le dit).
 
Quelqu'un a une idée ? un truc ?
J'ai aussi essayé les win32pipe, mais sans succès (la doc est pas très claire faut dire...).
 
Toute info/astuce est la très bienvenue !


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
mood
Publicité
Posté le 13-12-2002 à 14:39:45  profilanswer
 

n°269051
Kristoph
Posté le 13-12-2002 à 14:46:45  profilanswer
 

Utilises des sockets, mais n'utilises pas pickle alors.
 
PS : Woooooooowow ! Un topic Python !!! Ca fesait longtemps.


Message édité par Kristoph le 13-12-2002 à 14:47:10
n°269056
e_esprit
Posté le 13-12-2002 à 14:50:30  profilanswer
 

Kristoph a écrit :

Utilises des sockets, mais n'utilises pas pickle alors.
 
PS : Woooooooowow ! Un topic Python !!! Ca fesait longtemps.


 
Ouais, mais le probleme c'est que mes objets sont assez complexes, c'est pas moi qui les ait crées (c'est des objets VTK, si tu connais...) et ils reposent sur du C++...
Donc je peux pas me permettre de les decomposer champ par champs (surtout que je ne connais leur type exacte qu'a l'execution).
C'est pour ca, si y avait un moyen plus simple de passer des objet d'un process a un autre...
Personne ne connait un substitut a pickle ???


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
n°269063
Kristoph
Posté le 13-12-2002 à 14:54:51  profilanswer
 

C'est probablement la raison pour laquelle pickle ne peut pas les serialiser. Dans ton cas, il ne reste pas beaucoup de choix :
 
- Tu met en place un protocole de communication entre tes 2 processus et tu utilises les sockets pour ça.
- Tu ajoutes à chacun de tes objets des méthodes qui leur permet de se serialiser eux même ( lourd si il y a beaucoup de classes differentes )

n°269068
e_esprit
Posté le 13-12-2002 à 14:57:28  profilanswer
 

Kristoph a écrit :

C'est probablement la raison pour laquelle pickle ne peut pas les serialiser. Dans ton cas, il ne reste pas beaucoup de choix :
 
- Tu met en place un protocole de communication entre tes 2 processus et tu utilises les sockets pour ça.
- Tu ajoutes à chacun de tes objets des méthodes qui leur permet de se serialiser eux même ( lourd si il y a beaucoup de classes differentes )
 


Impossible, parce que non seulement y a beaucoup de classes, mais en plus, les wrappers pythons qui les manipulent sont générés de facons automatique, et pas par moi...


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
n°269071
lorill
Posté le 13-12-2002 à 15:03:41  profilanswer
 

attention, je vais dire un gros mot.
 
CORBA ?

n°269079
e_esprit
Posté le 13-12-2002 à 15:18:06  profilanswer
 

lorill a écrit :

attention, je vais dire un gros mot.
 
CORBA ?


Ah j'ai oublié de préciser : pas CORBA.
 
Explication : en fait c'est un probleme de oufs (reellement !!!).
 
J'ai une appli python qui utilise omniorbpy (CORBA n'est pas un gros mot pour moi  :) ) et qui recoit des evennement par un eventchannel sur le bus CORBA...
Ces evenement contiennent des objets a partir desquels je construis des objets VTK, ceci afin de pouvoir les visualiser dans Mayavi (programme de visu VTK en python, donc controlable depuis python).
Tout le monde me suis jusque la ?
 
Or il se trouve que Mayavi utilise tkInter, et que les boucles de gestion des evennement CORBA et Tk ne s'entendent pas du tout, du tout. Je suis donc obligé pour cela de séparer la gestion des evennements CORBA, et la gestion de Mayavi dans deux process differents (j'ai essayé dans deux threads, ca ne focntionne pas). Il me faut donc un moyen pour les faire communiquer, et CORBA n'est pas possible, car pour povoir etre informé de l'arrivée de donnée a afficher, mon process Mayavi a deux choix :
1) disposer d'un ecouteur d'event => retour au probleme original, on tourne en rond
2) Proposer un objet sur le bus Corba qui est appelé par l'autre process => meme problème
 
Je sais pas si c'est tres clair, mais faut dire que le probleme est complexe. Mais bon jai peut etre une soluce (faut que je teste), mais bon, c'est tellement propre a mon probleme que je ne la detaillerait pas ici !!! (je vais vous epargner ca  :D ).
 
Mais si quelqu'un a une idée, je suis preneur !!!


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
n°272615
e_esprit
Posté le 19-12-2002 à 10:47:58  profilanswer
 

UP  :bounce:  
 
Ca marche pas, j'ai toujours un probleme de thread et de boucles de gestion d'evenement qui entrent en conflit (cette fois TKinter (mayavi) et mon thread de gestion du socket).
 
Donc si quelqu'un a deja resolu des problèmes de conflit de thread avec TK, je suis preneur de coneils (y a bien le cas de fnorb + tkinter => TkReactor mais je comprends rien a leur code...).


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  Communication Inter Processus

 

Sujets relatifs
Kill des processus[Socket/Tubes] Communication inter-processus : le plus performant ?
[C] komment tuer un processus zombie ?[Merise] questions sur le Modele Organisationnel de Communication
Thread et processus[Urgent] Probleme de communication
[Win32] [RESOLU] Recuperer la liste des processusCommunication Inter-Servlet
[C++/Linux] Communication inter-processusCommunication inter processus sous linux
Plus de sujets relatifs à : Communication Inter Processus


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR