스레드를 통해 데이터를 보내는 스레드를 제어하기 위해 스레딩 모듈을 사용하고 있지만 스레드와 데이터를주고받을 수있는 적합한 솔루션을 찾을 수 없습니다. 나는 Overriding python threading.Thread.run()과 같은 것을 시도했지만 제대로 작동하지 않는 것처럼 보입니다. 누구든지 어떤 제안이라도 있으면 무엇이든 해봐서 기쁠 것입니다 :)변수를 스레드로 전달하는 파이썬
고마워요!
스레드를 통해 데이터를 보내는 스레드를 제어하기 위해 스레딩 모듈을 사용하고 있지만 스레드와 데이터를주고받을 수있는 적합한 솔루션을 찾을 수 없습니다. 나는 Overriding python threading.Thread.run()과 같은 것을 시도했지만 제대로 작동하지 않는 것처럼 보입니다. 누구든지 어떤 제안이라도 있으면 무엇이든 해봐서 기쁠 것입니다 :)변수를 스레드로 전달하는 파이썬
고마워요!
당신은 이것을 거꾸로 생각하고 있습니다. 소켓을 통해 데이터를 보내는 쓰레드라는 사실을 잊어 버려라. 데이터는 스레드에 도달 할 필요가 없으며 소켓에서 데이터를 보내는 로직에 도달해야합니다.
예를 들어, 소켓을 통해 전송해야하는 항목을 보유하는 대기열을 가질 수 있습니다. 소켓 쓰기 코드는 큐에서 메시지를 가져와 소켓 밖으로 보냅니다. 다른 코드는이 큐에 메시지를 넣습니다. 소켓에 메시지를 보내야하는 코드는 전송을 수행하는 스레드가 있다는 것을 모르고 다루어야합니다.
메시지 대기열을 사용하십시오. 파이썬에는 스레드간에 데이터를 전달하기위한 모듈이 Queue
이지만, 0MQ http://www.zeromq.org과 같은 타사 라이브러리를 사용하는 경우 스레드를 별도의 프로세스로 분할하면 동일한 방식으로 작동합니다.
스레딩보다 다중 처리가 더 쉽지만 스레딩을 사용해야하는 경우 최대한 많은 데이터를 잠그고 공유하지 마십시오. 대신 미묘한 버그가 발생할 수있는 방법을 제한하려면 미리 작성된 모듈 Queue
을 사용하십시오.
더 나은 점 : 감사합니다. – Trent