Lock, RLock, Condition, Semaphore オブジェクトを使う
# -*- coding: utf-8 -*- import threading import time LOCK = threading.Lock() def func(): for i in range(10): time.sleep(0.1) print i, print def lock_func(): # with文を使わない場合はacquireとreleaseメソッドを使う with LOCK: func() a = threading.Thread(target=func) b = threading.Thread(target=func) print "unlock" a.start() b.start() a.join() b.join() c = threading.Thread(target=lock_func) d = threading.Thread(target=lock_func) print "lock" c.start() d.start()
実行すると
unlock 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 lock 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
詳細はドキュメントで
0 件のコメント:
コメントを投稿