0

長いファイルの読み取りのように、完了するまでに時間がかかるループがあるとします。どのようにすれば、一定時間x(ミリ秒?) ごとに「何らかのコード」を実行できますか?

while inFile.readable():
    line = inFile.readline()
    print(line)   # I want to do this every few seconds

演習として、スレッド化とラムダを使用してこれを行いたいと思います。

4

3 に答える 3

1

これを行うには、何かを最後に印刷した時間を追跡します。

last = time.time()
while inFile.readable():
    line = inFile.readLine()
    now = time.time()
    if now - last > 2: # seconds
        print("time up!")
        last = now

ファイルの読み取りに 2 秒以上かかる場合、そのループはtime up!2 秒ごとに出力されます。

于 2012-10-20T23:09:38.987 に答える
0

APScheduler を調べると、特定の間隔で Python コードを実行するための非常に単純な cron のようなインターフェイスがあります。

http://packages.python.org/APScheduler/

私は自分のプロジェクトのタスクをスケジュールするためにそれを使用しています。ジョブを保存する他の方法が必要な場合は、非常に安定してテストされており、非常に簡単に拡張できます。

うーん、これは私があなたの質問に戻ったので、あなたが望むものには少しやり過ぎですが、他の人にとって他の同様の状況に役立つ可能性があるので、私はそれを残します.

于 2012-10-20T23:07:58.107 に答える
0

例えば:

import thread, time

def takes_a_while():

    def print_status():
        while True:
            print i   # print current i every two seconds
            time.sleep(2)

    status_thread = thread.start_new_thread(print_status, ())
    for i in xrange(10000000):
        print '*',
        time.sleep(0.1)
    status_thread.exit()

takes_a_while()

デコレータまたはコンテキストを使用すると、より適切に実行できますが、アイデアは得られました。

于 2012-10-20T23:48:46.200 に答える