Python-遅延操作


日常の開発では、特定の効果を達成するために一定の時間後に関数を実行する必要があるというニーズに直面することが多い.この場合、関数を遅延させるメカニズムが必要です.次の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後に実行され、test2test1よりも先に実行されるのは、同じ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は実行関数が完了するまで下に実行されないことがわかる.