XIO: fatal IO error 11 (Ressource temporairement non disponible) sur le serveur X “:0,” après 235 demandes (235 connu traitées) avec 0 événements

Oui, d'autres personnes ont posé cette question avant, mais pas dans le même contexte ou à ma satisfaction. Donc, ici, va::

Je suis en train d'écrire une application à l'aide de python, le programme à l'aide de pygame (ergo opengl) pour afficher le graphique. Les graphiques sont générés dans le programme lui-même (donc pas de problèmes de répertoires que ce soit).

L'application a également besoin d'accéder à l'entrée parallèle à partir d'un utilisateur. Pour réaliser cela, j'utilise un multitraitement bloc avec un tuyau et de lire la clé d'entrée à l'aide de pygame boucle d'événements. Le code ci-dessous s'exécute dans une boucle. La première itération de boucle fonctionne bien, mais sur la 2ème itération je me suis levée que XIO erreur.

   parent, child = Pipe(duplex=True)
   # this function draws the canvas
   switches, retOrient = self.drawCanvas(cond, count, dispSize, moves)
   # this function gets the user input in another thread - stage 1
   p = Process(target=userInput, args=(self.button, child) )
   p.start()
   b_press = parent.recv()
   parent.close()

def userInput(button, child):
    button_pressed = button.blockAndWait()
    child.send( "%s"%(button_pressed.keyname) )
    child.close()

Je suis un peu perplexe sur la façon dont cette erreur se produit, quelles sont les pièces internes de XIO qui en sont la cause. Aucune des autres réponses expliquer la cause de cette erreur. Considérant qu'il fonctionne bien comme un processus unique de l'application, le multitraitement module de fermeture quelques IO canal (l'entrée d'objet enregistré, l'affichage de l'objet ou de l'événement en boucle) ou de l'ouverture de certaines inutile canaux. Comment déchiffrer ce qui est exactement la cause de cette XIO erreur?

OriginalL'auteur knk | 2012-12-07