はい、他の人が以前にこの質問をしたことがありますが、同じコンテキストではなく、満足のいくものではありません. だから、ここに行きます::
グラフィックを表示するためにpygame(ergo opengl)を使用するプログラムであるpythonを使用してアプリケーションを作成しています。グラフィックはプログラム自体で生成されます (したがって、ディレクトリの問題はまったくありません)。
アプリケーションは、ユーザーからの入力に並列にアクセスする必要もあります。これを実現するために、パイプでマルチプロセッシング ブロックを使用し、pygame イベント ループを使用して入力キーを読み取ります。以下のコードはループで実行されます。最初のループ反復は正常に機能しますが、2 回目の反復で XIO エラーがスローされます。
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()
このエラーがどのように発生するのか、XIO の内部構造が原因であることに少し当惑しています。このエラーの根本的な原因を実際に説明している他の回答はありません。マルチプロセッシング モジュールは、シングル プロセス アプリケーションとして正常に動作することを考慮して、いくつかの IO チャネル (入力登録オブジェクト、表示オブジェクト、またはイベント ループ) を閉じているか、不要なチャネルをいくつか開いています。この XIO エラーの原因を正確に解読するにはどうすればよいですか?