0

を使用して簡単なコマンド ライン アプリケーションを作成しようとしていますprompt-toolkit。それは非常にうまく機能しますが、長い間入力がなかった場合、プログラムを終了したいと思います。これは私にとって非常に挑戦的であることが判明しました。

以下は、cli アプリがどのように動作するかの擬似コードです。

from prompt_toolkit import PromptSession
import time

def execute(cmd):
    # do long task
    time.sleep(120)

if __name__ == '__main__':
    s = PromptSession()

    while True:
        start_time = time.time()
        cmd = s.prompt('>')
        execute(cmd)

        if time.time() - start_time > 60:
            break

したがって、ユーザーが最後の 60 秒間にコマンドを発行しなかった場合、プログラムは終了するはずです。ただし、60 秒以上かかるコマンドが実行された場合は、コマンドが終了してから 60 秒後にのみ終了する必要があります (新しいコマンドは発行されません)。

私はすでに最初のビットにつまずいています。の実行中に時間を確認するために並列処理が必要s.promptですか? prompt_asyncコマンドのバージョンもあります。私はそれで遊んだが、成功しなかった...

4

1 に答える 1