2011-11-13 3 views
0

스레드를 통해 데이터를 보내는 스레드를 제어하기 위해 스레딩 모듈을 사용하고 있지만 스레드와 데이터를주고받을 수있는 적합한 솔루션을 찾을 수 없습니다. 나는 Overriding python threading.Thread.run()과 같은 것을 시도했지만 제대로 작동하지 않는 것처럼 보입니다. 누구든지 어떤 제안이라도 있으면 무엇이든 해봐서 기쁠 것입니다 :)변수를 스레드로 전달하는 파이썬

고마워요!

답변

2

당신은 이것을 거꾸로 생각하고 있습니다. 소켓을 통해 데이터를 보내는 쓰레드라는 사실을 잊어 버려라. 데이터는 스레드에 도달 할 필요가 없으며 소켓에서 데이터를 보내는 로직에 도달해야합니다.

예를 들어, 소켓을 통해 전송해야하는 항목을 보유하는 대기열을 가질 수 있습니다. 소켓 쓰기 코드는 큐에서 메시지를 가져와 소켓 밖으로 보냅니다. 다른 코드는이 큐에 메시지를 넣습니다. 소켓에 메시지를 보내야하는 코드는 전송을 수행하는 스레드가 있다는 것을 모르고 다루어야합니다.

+0

더 나은 점 : 감사합니다. – Trent

1

메시지 대기열을 사용하십시오. 파이썬에는 스레드간에 데이터를 전달하기위한 모듈이 Queue이지만, 0MQ http://www.zeromq.org과 같은 타사 라이브러리를 사용하는 경우 스레드를 별도의 프로세스로 분할하면 동일한 방식으로 작동합니다.

스레딩보다 다중 처리가 더 쉽지만 스레딩을 사용해야하는 경우 최대한 많은 데이터를 잠그고 공유하지 마십시오. 대신 미묘한 버그가 발생할 수있는 방법을 제한하려면 미리 작성된 모듈 Queue을 사용하십시오.

관련 문제