1

以下に更新:

いくつかの要因に基づいてスクリプトをスリープ状態にする時間を計算する関数を作成したスクリプトがあります。つまり、スクリプトを 30 分間再実行する必要がないか、数日かかる可能性があります。

さて、私は time.sleep(seconds) がプログラムをスリープ状態に設定し、それから起動して再度実行すると考えていました。

time.sleep(3600)
runScriptAgain()

どうやら、これは私が思っていたことをしていないようです。もちろん、ほとんどのことは、私が思っていること、つまり学習の喜びを実現することは決してないようです!

とにかく、スクリプトが再開されないことがわかったので、これを行う他の方法を探しました。誰かが言及していましos.execたが、私の(非常に限られた)知識からすると、スクリプト内から他の何かを実行するために使用されているようです。それから私はその機能を試しましたthreading.Timerが、それも私が望むことをしていないようです。または、自分が何をしているのかわかりません。その可能性はさらに高くなります。そして、スレッドやデーモンなど、私がまったく知らないことについて言及している人々を見てきました。

私はおそらくforループを考えていましたが、それはかなりアマチュアのようです(ポットとケトルの出会い!)、そしてそれがどれほどうまく機能するかはわかりません(もしあったとしても)。

timeToSleep = SleepValue()
count = 0 
while count < timeToSleep:
    count + 1
    time.sleep(1)
runscript()

では、特定の時間実行を停止し、再度実行して、次回までスリープするようにスクリプトを設定する簡単な方法はありますか? これを行うにはかなり簡単な方法があるに違いないと思いますが、実際には手がかりがありません。私は Python 3.2.3 を使用して Windows 7 を使用しています。Python を学習してまだ数か月しか経っていないため、複雑なことは私のスキル レベルを超えている可能性があります。

更新しました:

def something():
    print('Hello!')

def sleep():
    time.sleep(5)
    runscript()

def runscript():
    something()
    sleep()

runscript()

わかりました、それが私のコードが現在どのようにセットアップされているかです。この単純なコードで試してみましたが、問題は決して起きないことですか? 何が起こっているのかよくわかりません。最初の関数を呼び出し、アイテムを印刷し、5 秒間スリープし、ad naseum を繰り返すと思いました。たぶん、誰かが私がそれをどのようにすべきかを説明できるでしょう。

ありがとう!

4

2 に答える 2

1

これについては python のschedモジュール、またはAdvanced Python Schedulerのようなものを見たいと思うかもしれません。いずれにせよ、スクリプト内からスケジューリングを実行したい場合は、長時間実行されるプロセスまたはサービスとしてセットアップする必要があります。Ignacio Vazquez-Abrams のアイデアは最も単純です。OS のスケジューラ (Windows のタスク スケジューラまたは Linux の cron) を使用して x 分ごとに実行するだけです。スクリプトで最初に構成ファイルを読み取って、実行を終了するか終了するかを決定します。次回の実行時に更新または変更する必要がある場合は、構成ファイルを更新するだけです。

于 2012-07-17T03:35:32.903 に答える
0

このようにスクリプトを設定すると、 time.sleep( 3600 ) が機能します。実行コードを while ループ内に配置し、実行させます。ある値と比較する必要はありません。

KEEP_GOING = should_we_keep_going( )

while KEEP_GOING:
     Time.sleep( 100 )
     Runscript( )
KEEP_GOING = should_we_keep_going( )

また、スケジュールされたタスクを設定するというアイデアは素晴らしいアイデアだと思います。

于 2012-07-17T03:28:26.670 に答える