Bonjour,

Je suis en train de refactorer une application pour faire du multiprocessing. Tout se passe en python, avec une gui utilisant pygtk.

Je crée donc 2 process (grâce au module processing) et je les fait communiquer entre eux (la inqueue de l'un est l'outqueue de l'autre et ils s'envoient des message avec arguments "picklisés" par ces queues).

Je lance l'application, une 1ère fenêtre gtk me permet de paramétrer un objet que je renvoie ensuite à mon autre process qui s'en sert alors pour faire son travail.

1er souci : le process gtk me bouffe une quantité énorme de cpu alors qu'il ne fait plus rien (hormis la boucle main de gtk qui tourne toujours). Il me semble que c'est surtout le gobject qui tourne à fond mais je ne vois pas comment le limiter (le PRIORITY_LOW ne semble pas faire grand chose). (info : je n'ajoute qu'une seule tache au gobject : executer les taches qui sont transmises à la queue du process gtk, donc très peu de choses en fait)

Ne pouvant faire de pause avec ces process, j'ai essayé une méthode un peu rude : je stop mon process gtk, le kill et en recrée un nouveau au besoin. Mon appli ne rame plus. C'est chouette. J'en arrive à vouloir utiliser un autre menu de configuration, donc une nouvelle fenêtre gtk.

Et là, 2ème problème :
Je crée ma nouvelle fenêtre (complètement différente de la 1ère) qui n'utilise que des objets créés dans ce nouveau process gkt. La fenêtre est bien crée, mais rien n'apparaît et ma console se remplie de "BAD ID CHOICE [...] invalid resource ID for this connexion ..." (j'ai déjà eu ce problème quand process essayait d'accéder à u objet d'un autre process, mais ce n'est pas le cas ici donc ...)

Je ne lâche pas l'affaire et décide de revenir à la solution dans laquelle je laisse le process GTK tourner. Je crée ma nouvelle fenêtre, pas d'erreur mais 3ème problème : rien à l'écran.
Après de bonnes heures de prise de tête, je remarque que si je ne détruis pas ni ne cache la toute 1ère fenêtre du logiciel, ma nouvelle fenêtre apparaît bien. (oui il fallait le trouver celui-là)

Le hic c'est que ces 2 fenêtre sont complètement indépendantes (toutes 2 sont chargées depuis des fichiers glade différents) et que je n'avais pas ce problème avant de faire du multiprocessing.

[Edit]
Bon pour le 3ème problème, en récupérant le widget de ma 1ère fenêtre et en le destroyant, la nouvelle fenêtre apparaît bien toute seule finalement. Peut-être un fichier qui ne s'était pas recompilé... 1 done! 2 to go!
[/Edit]

Donc un certain nombre de problèmes que je pose ici dans l'espoir que quelqu'un ait une idée (ou même plusieurs ) qui pourrait me sauver.
Merci d'avance
Benjamin