2011-08-10 3 views

답변

2

"메시지"를 (thread_id, 'message')의 튜플로 만든 다음 모든 스레드로 보내면 안됩니다. 메시지를 보낸 스레드는 메시지를 무시할 수 있습니다. thread_id.

+0

하지만 스레드 자체에서 스레드의 ID를 얻는 방법은 무엇입니까? – RichardG

+0

http://docs.python.org/library/threading.html#threading.Thread.ident 또는 스레드의 초기화의 일부로이를 전달하십시오. – Amber

+0

초기화를 통해 매개 변수를 보내는 것과 관련된 또 다른 문제가 있습니다. 매개 변수가 스레드의 def로 보내지는지 알 수 없습니다. arg 매개 변수를 가진 def로 초기화 프로그램에 args = ("hello")를 보내면 def가 1 대신에 5 개의 매개 변수를 취하는 TypeErrors가됩니다. – RichardG

1

이것은 대기열의 용도입니다. 각 스레드에게 Queue를주고 자신의 것을 제외한 모든 것에 쓰십시오.

+0

현재 스레드를 제외한 모든 스레드에 항상 알리고 있다면 모든 스레드가 반복하고 (자신의 메시지를 무시하는) 공유 이벤트 로그를 갖는 것이 훨씬 효율적입니다. – Amber

관련 문제