Python-遅延操作
日常の開発では、特定の効果を達成するために一定の時間後に関数を実行する必要があるというニーズに直面することが多い.この場合、関数を遅延させるメカニズムが必要です.次の2つの方法を簡単に説明します.
sched
出力結果は次のとおりです.
結果から分かるように、関数は2 s後に実行され、
timer
出力結果は次のとおりです.
結果から,関数は果たして2 s実行を遅らせたことが分かる.
2つの方式の出力結果から、
sched
import sched,time
def func(a):
print time.time(),"Hello Sched!",a
print time.time()
s = sched.scheduler(time.time,time.sleep)
# 2 ,1 ,func ,("test1",)
s.enter(2,1,func,("test1",))
s.enter(2,0,func,("test2",))
s.run()
print time.time()
出力結果は次のとおりです.
1519443179.4
1519443181.4 Hello Sched! test2
1519443181.4 Hello Sched! test1
1519443181.4
結果から分かるように、関数は2 s後に実行され、
test2
はtest1
よりも先に実行されるのは、同じ2 s後に実行され、test2
の優先度がtest1
よりも高いためである.timer
import threading,time
def func(a):
print time.time(),"Hello Timer!",a
print time.time()
s = threading.Timer(2,func,("test",))
s.start()
print time.time()
出力結果は次のとおりです.
1519443055.69
1519443055.69
1519443057.69 Hello Timer! test
結果から,関数は果たして2 s実行を遅らせたことが分かる.
2つの方式の出力結果から、
timer
は非同期で実行され、次のコードの実行に詰まっていないが、sched
は実行関数が完了するまで下に実行されないことがわかる.