2011-06-13 13 views
0

これを行う方法を理解するのに問題があります。Python時間の問題

私は設定された期間Pythonスクリプトを実行しようとしています。そして、私が何かを動かすために必要な持続時間の1/10ごとに。問題は、このステップが完了するまでに時間がかかることです。私は開始時に設定された最大時間を超えることはできません。

例: 所要時間20時間

間隔= 20/10 = 2時間(それがする必要がある場合、これは変更することができます)

2時間ごとにそれが機能を実行します()。 function()は完了するまでに0〜60分かかります。そしてそれは眠る。どのようにして9回以上実行し続けるようにすることができますか?

+1

単にグローバルタイマーを使用しないのはなぜですか?たとえば、最初からそれを開始し、必要なときにはいつでも値をチェックします。 –

+1

シグナルを使用するには 'signal.alarm'をチェックアウトすることができます。このようにしてSIGALRMが一定の間隔で生成され、シグナルハンドラが 'function'を呼び出すように設定することができます。 'signal.setitimer'もチェックしてください。 –

答えて

2

おそらく信号を使うことができます。考え方は、SIGALRMが生成されたときに呼び出されるシグナルハンドラを設定することです。シグナルハンドラでは、functionと呼ぶことができます。その後、アラームをリセットして再度実行します。これはちょっとしたアイデアを伝えるための基本的な例です。しかし、私はそれと連携するかわからない、

signal.signal(signal.SIGALRM, alarm_handler) 
signal.alarm(interval) 

それとも、自動的にインターバルアラームを設定するsignal.setitimerを使用することができます:アラームが消灯したら

import signal 
... 
signal.signal(signal.SIGALRM, alarm_handler) # set the signal handler 
signal.alarm(interval)      # set the alarm 
... 
def alarm_handler(signum, stack): 
    # call function 
    function() 

、あなたはfunction()を呼び出してから、アラームをリセット大きなタイムスライス(マイクロスリープに使用される)。

注:signal.alarm()をメインスレッドから呼び出す必要があります。

0

フォーク実際のジョブを実行するサブプロセス。ランタイム制限を超えた場合、ジョブを強制終了します。