5

x 分ごとに x 時間にわたって気象データをダウンロードする必要があるプログラム (temptrack) があります。を使用して x 分ごとにダウンロードする方法を見つけましたtime.sleep(x*60)が、このプロセスを一定時間繰り返す方法がわかりません。

更新: 解決策を投稿してくれたすべての人に感謝します。「datetime.datetime.now() + datetime.timedelta(hours=x)」を使用した例を最良の回答としてマークしました。これは、それを最もよく理解でき、私の目的には非常にうまく機能するように思われるためです。

4

5 に答える 5

5

やっていることをやめたい時間を計算し、制限時間が過ぎていないことを毎回確認してください。このような:

finish_time = datetime.datetime.now() + datetime.timedelta(hours=6)
while datetime.datetime.now() < finish_time:
    do_something()
    sleep_for_a_bit()
于 2010-04-18T10:38:13.813 に答える
4

Python 標準ライブラリでschedを見つけました。

于 2010-04-18T10:02:22.570 に答える
3

スケジューラーを探しています。

このスレッドを確認してください。

于 2010-04-17T21:37:58.683 に答える
0

少しやり過ぎかもしれませんが、バックグラウンド タスクを実行する場合、特に GUI が必要な場合は、QSystemTrayIconQTimerを使用して PyQt ルートを確認することをお勧めします。

于 2010-04-17T22:20:12.110 に答える
-2

誤解しているかもしれませんが、十分な回数実行されるループに入れてください。たとえば、5 分ごとに 2 時間ダウンロードするには、24 回ダウンロードする必要があるため、次のようになります。

for i in range(24):
    download()
    sleep(5*60)

パラメータ化する必要がある場合は、次のとおりです。

from __future__ import division
from math import ceil
betweenDLs = 5 # minutes
totalTime = 2*60 # minutes
for i in range(int(ceil(totalTime/betweenDLs))):
    download()
    sleep(betweenDLs*60)
于 2010-04-17T21:37:26.967 に答える