3

プログラムの重要な部分(私の例ではサイクル)のキーボード割り込みを遅らせる方法は何ですか。

多くのファイルをダウンロード(または保存)したいのですが、時間がかかりすぎる場合は、最近のファイルがダウンロードされたらプログラムを終了したいと思います。

PythonでのCapturekeyboardinterruptの答えのように、try-exceptなしでシグナルモジュールを使用する必要がありますか?シグナルハンドラーを使用してグローバル変数をTrueに設定し、Trueの場合はサイクルを中断できますか?

元のサイクルは次のとおりです。

for file_ in files_to_download:
    urllib.urlretrieve("".join(baseurl, file_), os.path.join(".", file_)) 
4

1 に答える 1

5

次のようなものが機能する場合があります。

# at module level (not inside class or function)
finish = False
def signal_handler(signal, frame):
    global finish
    finish = True

signal.signal(signal.SIGINT, signal_handler)

# wherever you have your file downloading code (same module)
for file_ in files_to_download:
    if finish:
        break
    urllib.urlretrieve("".join(baseurl, file_), os.path.join(".", file_)) 
于 2012-11-02T16:45:10.293 に答える