2016-08-23 13 views
0

私はPythonで関数を持っていて、かなり高速ですので、1秒あたり10000回のようなループで呼び出すことができます。Pythonで時間の経過とともに均等に関数呼び出しが呼び出される

私は2000年に1秒間を呼び出しますが、呼び出し間に均等な間隔を置いて呼び出したいとします(2000回の呼び出しと2番目の呼び出しの終了まで)。どのように私はこれをPythonで達成することができますか?

+0

Pythonの[sleep()](http://www.tutorialspoint.com/python/time_sleep.htm)メソッドを調べましたか?すべての関数呼び出しの前に呼び出すことができます。自分の状況に最も適した時間(ミリ秒単位)を把握するだけで済みます。 – Xetnus

+0

呼び出される場所によって異なります。素朴な方法は 'time.sleep(1/2000) 'を呼び出すことですが、それは2000x/secであることは保証されておらず、あなたの望むものではないかもしれないあなたの全プロセスを寝かせることができます。 –

+0

はい、私はそれを見てきましたが、私はこれを見つけました:http://stackoverflow.com/questions/1133857/how-accurate-is-pythons-time-sleep あなたが頼ることができないように見えます高周波数/低遅延用 – pushist1y

答えて

0

汎用のスケジューラを実装する組み込みのschedモジュールを使用できます。 s.enter方法を使用

import sched, time 

# Initialize the scheduler 
s = sched.scheduler(time.time, time.sleep) 

# Define some function for the scheduler to run 
def some_func(): 
    print('ran some_func') 

# Add events to the scheduler and run 
delay_time = 0.01 
for jj in range(20): 
    s.enter(delay_time*jj, 1, some_func) 
s.run() 

は、イベントが入力された場合に比べて遅れてスケジューラにイベントを置きます。 s.enterabsを使用して、特定の時刻にイベントが発生するようにスケジュールすることもできます。

関連する問題