0

そこで、再構築の進行状況と、この再構築が完了するまでの残り時間を出力する関数を作成したいと思います。ただし、再構築が 100% に達したら終了する必要があります。これは私がこれまでに持っているものです:

def progress():
    # This prints out the time left until rebuild is done.
    loudEchoCMD("storage::rebuild-eta")
    # This prints out the % of the rebuild that is done.
    rebuildProgress = loudEchoCMD("storage::rebuild-progress") 
    print rebuildProgress 
    if rebuildProgress != '100%':
        global t 
        t = threading.Timer(5.0, progress)
        t.start()
    else:
        t.cancel()

再構築プロセスを開始すると、スレッドが進行状況と ETA を 5 秒ごとに出力する代わりに、最初にそれを終了してからスレッドを開始します。

4

1 に答える 1

2

再構築プロセスを開始すると、最初にそれが終了してからスレッド化が開始されます

別のスレッドで再構築プロセスを開始します。

import threading
build = threading.Thread(target = start_rebuild)
build.start()
progress()
build.join()  # wait for build thread to end

progressまた、完了するのに5秒もかからないと仮定するglobal tと、 and を省略しても十分だと思いますt.cancel

def progress():
    # This prints out the time left until rebuild is done.
    loudEchoCMD("storage::rebuild-eta")
    # This prints out the % of the rebuild that is done.
    rebuildProgress = loudEchoCMD("storage::rebuild-progress") 
    print rebuildProgress 
    if rebuildProgress != '100%':
        t = threading.Timer(5.0, progress)
        t.start()
于 2012-10-03T12:03:34.723 に答える