파이썬에서 현재 스레드를 제외한 모든 스레드 (Python2의 스레드 모듈)에 단방향 메시지를 보내야하는 응용 프로그램을 개발 중입니다. 실. 변수를 시도했지만, 모든 스레드가 보낸 사람이 아닌 모든 스레드에 응답하게됩니다.발신자를 제외한 모든 스레드에서 파이썬과 단방향 메시지 보내기
그런 식으로 메시지를 보내는 가장 좋은 방법은 무엇입니까?
파이썬에서 현재 스레드를 제외한 모든 스레드 (Python2의 스레드 모듈)에 단방향 메시지를 보내야하는 응용 프로그램을 개발 중입니다. 실. 변수를 시도했지만, 모든 스레드가 보낸 사람이 아닌 모든 스레드에 응답하게됩니다.발신자를 제외한 모든 스레드에서 파이썬과 단방향 메시지 보내기
그런 식으로 메시지를 보내는 가장 좋은 방법은 무엇입니까?
"메시지"를 (thread_id, 'message')
의 튜플로 만든 다음 모든 스레드로 보내면 안됩니다. 메시지를 보낸 스레드는 메시지를 무시할 수 있습니다. thread_id
.
이것은 대기열의 용도입니다. 각 스레드에게 Queue를주고 자신의 것을 제외한 모든 것에 쓰십시오.
현재 스레드를 제외한 모든 스레드에 항상 알리고 있다면 모든 스레드가 반복하고 (자신의 메시지를 무시하는) 공유 이벤트 로그를 갖는 것이 훨씬 효율적입니다. – Amber
하지만 스레드 자체에서 스레드의 ID를 얻는 방법은 무엇입니까? – RichardG
http://docs.python.org/library/threading.html#threading.Thread.ident 또는 스레드의 초기화의 일부로이를 전달하십시오. – Amber
초기화를 통해 매개 변수를 보내는 것과 관련된 또 다른 문제가 있습니다. 매개 변수가 스레드의 def로 보내지는지 알 수 없습니다. arg 매개 변수를 가진 def로 초기화 프로그램에 args = ("hello")를 보내면 def가 1 대신에 5 개의 매개 변수를 취하는 TypeErrors가됩니다. – RichardG