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