multiwin.py: Fatal IO error 0 (Success) on X server :0.0. python: ../../src/xcb_io.c:249: process_responses: Assertion `(((long) (dpy->last_request_read) - (long) (dpy->request)) <= 0)' failed.
Sometimes I get:
multiwin.py: Fatal IO error 11 (Resource temporarily unavailable) on X server :0.0.
위 2개의 에러가 뜬다면, 그것은 multiprocessing 모듈을 썻기 때문일 것이다.
즉 동시에 X server랑 통신하려고하면 에러가 난다.
즉, UI는 무조건 main process에서 변경할 수 있다. fork 시킨 자식 프로세스가 변경하기위해서 X server와 커넥션을 하려고하면 무조건 에러가 난다.
이부분 때문에.. 고생좀 했다.
아래 사이트 참초:
http://stackoverflow.com/questions/9989475/python-multiprocessing-with-2-gtk-windows
▣ 질문: 멀티 프로세싱을 처리할때 어떻게 해야 신뢰성 있게 자식 프로세스의 stdout 결과를 redirect 할 수 있는가?
답변
이것에 대한 해결방법중 하나는 다음과 같다.
먼저 당신의 프로세스들을 메뉴얼하게 생성 해야 된다. 이러한 것들은 명시적으로 stdout/stderr file 핸들을 접근하게 될 것이다. 그리고 나서 당신은 socket을 이용해서 sub process와 커뮤니케이트를 하게 되고 multiprocessing.connection을 socket 위에서 하게 된다. 즉, multiprocessing.Pipe와 같은 것이다.
이러한 작업은 당신에게 IPC와 같은 기능을 제공해 줄 것이다.
아래에 2개의 에제를 참고하도록 하시오.
master.py
import multiprocessing.connection import subprocess import socket import sys, os ## Listen for connection from remote process (and find free port number) port = 10000 while True: try: l = multiprocessing.connection.Listener(('localhost', int(port)), authkey="secret") break except socket.error as ex: if ex.errno != 98: raise port += 1 ## if errno==98, then port is not available. proc = subprocess.Popen((sys.executable, "subproc.py", str(port)), stdout=subprocess.PIPE, stderr=subprocess.PIPE) ## open connection for remote process conn = l.accept() conn.send([1, "asd", None]) print(proc.stdout.readline())
subproc.py
import multiprocessing.connection import subprocess import sys, os, time port = int(sys.argv[1]) conn = multiprocessing.connection.Client(('localhost', port), authkey="secret") while True: try: obj = conn.recv() print("received: %s\n" % str(obj)) sys.stdout.flush() except EOFError: ## connection closed break
'Computer Science > Python' 카테고리의 다른 글
PIL 라이브러리: Image.open AttributeError (0) | 2013.11.26 |
---|---|
subprocess (0) | 2013.07.26 |
GUI 프로그래밍 (0) | 2013.06.23 |
ImageMagick for Python (0) | 2013.05.07 |
7장 클래스와 객체지향 프로그래밍 (0) | 2012.07.03 |