プログラムを一時停止するにはPAUSEキーを押す【Python】

実行中のプログラムを『任意のタイミング』で一時停止して再開する方法です。

プログラムに特別な仕掛けは必要ありません。

キーボードの『Pause キー(ポーズキー)』を押すだけです。

キーボードの右上のほうにある『Pause/Break キー』のことです。

実行中の Python を一時停止するには、ウィンドウをアクティブにしてから、キーボードの Pause キーを押します。

特に何も表示は出ませんでしたが、タスクマネージャーで CPU の使用率を見たら、止まっていることがわかりました。

一時停止した Python を再開するには、何かキーを押します(矢印キーなど)。

プログラムの一時停止は、『cmd.exe のコマンドプロンプトウィンドウ』と『py.exe のウィンドウ』のどちらでも可能でした。

一時停止するときは、ウィンドウをクリックするなどして、アクティブにしてからポーズキーを押します

これで、プログラムが止まりました。

再開するときは、ウィンドウをクリックするなどして、アクティブにしてから何かキーを押します

これで、プログラムが再開しました。

一時停止は、シングルプロセス処理でも可能ですし、マルチプロセス処理でも一時停止が可能でした。

ポーズキーは、マルチプロセス処理でも有効でした。

マルチプロセス処理中にポーズキーを押したら、子プロセスがすべて一時停止しました。

何かキーを押すと、子プロセスが一斉に再開しました。

Python 以外でも、コマンドラインで動いてるようなプログラムであれば、たいていポーズキーで一時停止と再開が可能でした。

Pythonプログラムを一時停止するコード例

プログラムの一時停止を実験するための Python スクリプトです。

特別な仕掛けはありません。

スリープでゆっくり動く関数を作って、それをシングルプロセス処理で動かしてから、マルチプロセス処理で動かしました。

実行中に、ウィンドウをアクティブにしてから Pause キーを押すと、スクリプトの実行が止まります。

何かキーを押すと、スクリプトが再開します。

コード

以下のスクリプトを実行すると、0.5 秒ごとにプロセス ID を表示します。

実行時間は、約10秒です(シングル5秒、マルチ5秒)。

シングルプロセス処理中に Pause キーを押すと、処理が止まります。

マルチプロセス処理中に Pause キーを押しても、処理が止まります。

"""Pauseキーで一時停止する実験プログラム"""
from multiprocessing import Process
import os
import time


def main():
    """メイン関数"""
    print('シングルプロセス処理')
    mp_proc(0)

    print('マルチプロセス処理')
    ps = []
    for a in (1, 2, 3):
        ps.append(Process(target=mp_proc, args=(a, )))
    
    for p in ps:
        p.start()

    for p in ps:
        p.join()

    #『続行するには何かキーを押してください . . .』と表示させる
    os.system('PAUSE')
    return


def mp_proc(a):
    """sleepでゆっくり実行する関数"""

    # 実行中にキーボードの『Pauseキー(ポーズキー)』を押すと、
    # プログラムの実行が一時停止します。

    # シングルプロセス処理中に『Pauseキー』を押すと、
    # プロセスが一時停止しました。

    # マルチプロセス処理中に『Pauseキー』を押すと、
    # すべての子プロセスが一時停止しました。

    # 一時停止したプログラムを再開するには、
    # 何かキーを押します。たとえば、矢印キーなど。

    # 一時停止と再開のキー入力は、
    # 事前にウィンドウをクリックして、
    # ウィンドウをアクティブにしてから行います。

    # parent process id (親プロセスID)
    ppid = os.getppid()

    # process id (子プロセスID)
    pid = os.getpid()

    for n in range(0, 10):
        # 進捗表示
        print('a: %d n: %d ppid: %d pid: %d' % (a, n, ppid, pid))

        # スリープ 0.5秒
        time.sleep(0.5)
    else:
        print('a: %d END ppid: %d pid: %d' % (a, ppid, pid))
    return


if __name__ == '__main__':
    main()

実行結果

Python スクリプトの実行結果です。

途中、キーボードの Pause キーを押して、一時停止と再開を繰り返しました。

一時停止と再開を繰り返しても、コンソール画面には何も表示されませんでした。

ですが、タスクマネージャーで Python プロセスの CPU 使用率を見たら、止まっていることがわかりました(使用率0% になっていました)。

※ プロセス ID (ppid, pid) は、実行するたびに変わりました。

シングルプロセス処理
a: 0 n: 0 ppid: 7016 pid: 5760
a: 0 n: 1 ppid: 7016 pid: 5760
a: 0 n: 2 ppid: 7016 pid: 5760
a: 0 n: 3 ppid: 7016 pid: 5760
a: 0 n: 4 ppid: 7016 pid: 5760
a: 0 n: 5 ppid: 7016 pid: 5760
a: 0 n: 6 ppid: 7016 pid: 5760
a: 0 n: 7 ppid: 7016 pid: 5760
a: 0 n: 8 ppid: 7016 pid: 5760
a: 0 n: 9 ppid: 7016 pid: 5760
a: 0 END ppid: 7016 pid: 5760
マルチプロセス処理
a: 1 n: 0 ppid: 5760 pid: 8936
a: 2 n: 0 ppid: 5760 pid: 2992
a: 3 n: 0 ppid: 5760 pid: 8084
a: 1 n: 1 ppid: 5760 pid: 8936
a: 2 n: 1 ppid: 5760 pid: 2992
a: 3 n: 1 ppid: 5760 pid: 8084
a: 1 n: 2 ppid: 5760 pid: 8936
a: 2 n: 2 ppid: 5760 pid: 2992
a: 3 n: 2 ppid: 5760 pid: 8084
a: 3 n: 3 ppid: 5760 pid: 8084
a: 2 n: 3 ppid: 5760 pid: 2992
a: 1 n: 3 ppid: 5760 pid: 8936
a: 1 n: 4 ppid: 5760 pid: 8936
a: 3 n: 4 ppid: 5760 pid: 8084
a: 2 n: 4 ppid: 5760 pid: 2992
a: 1 n: 5 ppid: 5760 pid: 8936
a: 2 n: 5 ppid: 5760 pid: 2992
a: 3 n: 5 ppid: 5760 pid: 8084
a: 2 n: 6 ppid: 5760 pid: 2992
a: 1 n: 6 ppid: 5760 pid: 8936
a: 3 n: 6 ppid: 5760 pid: 8084
a: 2 n: 7 ppid: 5760 pid: 2992
a: 1 n: 7 ppid: 5760 pid: 8936
a: 3 n: 7 ppid: 5760 pid: 8084
a: 2 n: 8 ppid: 5760 pid: 2992
a: 3 n: 8 ppid: 5760 pid: 8084
a: 1 n: 8 ppid: 5760 pid: 8936
a: 2 n: 9 ppid: 5760 pid: 2992
a: 1 n: 9 ppid: 5760 pid: 8936
a: 3 n: 9 ppid: 5760 pid: 8084
a: 2 END ppid: 5760 pid: 2992
a: 1 END ppid: 5760 pid: 8936
a: 3 END ppid: 5760 pid: 8084
続行するには何かキーを押してください . . .

Pause キーで処理を一時停止するメリット

任意のタイミングで、一時停止と再開ができるのがメリットでした。

プログラムに特別な仕掛けが不要だったのも良かったです。

現状のプログラムのままで、すぐに一時停止と再開ができました。

Python の処理を一時停止(中断)したいときは、Pause キーを押す。
処理を再開するときは、何かキーを押す。

おすすめの知識です。

Python プログラムに限らず、コマンドラインで動いているプログラムなら、たいてい Pause キーで一時停止できました。

Pause キーで一時停止『できたもの』と『できなかったもの』

自分が試してきた範囲では、Pause キーで一時停止と再開ができたのは、コマンドラインウィンドウだけでした。

cmd.exe や py.exe のウィンドウで動いていたプログラムです。

一方で、GUI(ジーユーアイ、グラフィカルユーザーインターフェース)プログラムでは、Pause キーが効かず、一時停止できませんでした。

GUI プログラムでも、Pause キーを押したときに一時停止するような実装があれば、機能する場合があると思います。

プログラムの一時停止を使った場面

一時的にディスクアクセスを止めたいときに使いました。

あと、何かエラーが大量に表示されてしまったときに、表示を止めるために使いました。

あとは、ルーターの再起動をしたいときに使いました。

ルーターが応答できるようになるまで、プログラムを一時停止しておくことで、無用なエラーページの取得を防ぐことができました。

Pause キーによる一時停止と再開はおすすめ

キーボードのポーズキーは、すぐに使えるのでおすすめです。

Pause キーを押せば、好きなタイミングで、プログラムを一時停止できました。

ちょっとプログラムを止めたいときに、Pauseキー はいつでも使えました。

タイトルとURLをコピーしました