threading.Event

1回書いたのに記事が消えてしまった・・・ソースだけ貼って寝よう

import time
import thread
import threading

end_count = 3

def thread_func(event, counter):
    time.sleep(2)
    while len(counter) < end_count:
        while not event.isSet():
            print "wait result: ", event.wait(1)
        print "counter : %d" % len(counter)
        counter.append("")
        event.clear()

def main():
    event = threading.Event()
    counter = []
    thread.start_new_thread( thread_func, (event, counter) )
    while len(counter) < end_count:
        event.set()
        time.sleep(2)

if __name__ == '__main__':
    main()

setでフラグ立ててclearでフラグ寝かしてisSetで獲得できて
waitはフラグが立つまで待つ。
バージョン2.7からwaitはフラグを戻り値として返すようになりました。引数指定してタイムアウトしたら返ってくるのはFalse