さて、私の問題は次のとおりです。3 つの関数をそれぞれ異なる間隔で実行するスクリプトがあります。3 つすべてがリソースを共有します。私がやったことは次のとおりです( res は共有リソースです):
import threading
import thread
lock = threading.Lock()
def f1(res) :
lock.acquire()
# do stuff
time = 10.0 # this one changes each time f1 runs
lock.release()
threading.Timer(time,f1).start()
def f2(res) :
lock.acquire()
# do stuff
time = 8.0 # this one changes each time f2 runs
lock.release()
threading.Timer(time,f2).start()
def f3(res) :
lock.acquire()
# do stuff
time = 8.0 # this one changes each time f3 runs
lock.release()
threading.Timer(time,f3).start()
thread.start_new_thread(f1(res))
thread.start_new_thread(f2(res))
thread.start_new_thread(f3(res))
コードを実行すると、最初のスレッド (f1) のみが永久に実行され、実際にはタイマーに設定された時間を待たずに実行されます。誰かが私に何が間違っているのか、どうすれば正しくできるのかを説明してくれませんか?
前もって感謝します。