Python でのバックグラウンド プロセス

Rana Hasnain Khan 2023年10月10日
  1. Python でのバックグラウンド プロセス
  2. Python での Windows のバックグラウンド プロセス
  3. Python での Linux または Mac でのバックグラウンド プロセス
Python でのバックグラウンド プロセス

バックグラウンド処理としてPythonスクリプトをバックグラウンドで実行する方法を紹介します。 Python の pythonw も紹介します。

Python でのバックグラウンド プロセス

自動化とデータ サイエンスの世界では、日々のタスクを簡単に自動化できるレベルまで進歩しており、更新することなくバックエンドで処理できます (更新するようにプログラムしていない限り)。

この記事では、スクリプトを作成してバックグラウンド プロセスとして実行する方法について説明します。

バックグラウンド プロセスは 1 回実行され、その後、コンピューターを起動すると自動的に処理され、コンピューターの電源を切ると停止します。

タスク マネージャーに移動するか、Python コマンドを使用して ID を使用してプロセスを強制終了することで、バックグラウンド プロセスを停止することもできます。

Python での Windows のバックグラウンド プロセス

Python スクリプトをバックグラウンド プロセスとして実行するには、2つの異なる方法があります。 1つの方法は、Python スクリプトを Windows のバックグラウンド プロセスとして実行するために使用される pythonw を使用することです。

pythonw を使用して、Python スクリプトをバックグラウンド プロセスとして実行します。 Pythonw は、ターミナル ウィンドウを使用せずに Python スクリプトを実行するために使用されます。

ターミナル ウィンドウを使用せずに任意の Python スクリプトを実行するための構文は次のとおりです。

pythonw backgroundprocess.py

backgroundprocess.py を、上記のコマンドでバックグラウンド プロセスとして実行するファイル名に置き換えることができます。

Python での Linux または Mac でのバックグラウンド プロセス

Linux または Mac で Python スクリプトをバックグラウンド プロセスとして実行するには、コマンドの最後に & 演算子を使用します。これにより、バックグラウンド プロセスとして実行されます。

Linux または Mac で Python スクリプトをバックグラウンド プロセスとして実行するための構文は次のとおりです。

# python
python backgroundprocess.py &

backgroundprocess.py を、上記のコマンドでバックグラウンド プロセスとして実行するファイル名に置き換えることができます。

スクリプトがバックグラウンド プロセスとして実行されると、プロセス ID を確認して、いつでもバックグラウンド プロセスを停止できます。 Windows で次のコマンドを使用して、開始したばかりのプロセスを強制終了できます。

kill -9 {{process id}}

Linux または Mac デバイスでプロセスを強制終了する場合は、次のコマンドを実行できます。

kill -9 {{process id}} &

上記のコマンドの -9 は、できるだけ早くプロセスを強制終了したいという意味です。 したがって、このコマンドを使用すると、中括弧内に ID を指定するプロセスが強制終了されます。

ここで、重要なスクリプトを作成して、それがどのように機能しているかを確認し、バックグラウンド プロセスとして実行しているスクリプトに関する更新情報を取得する場合、単純な 指図。

バックグラウンド プロセスからの出力をログに記録するコマンドを以下に示します。

pythonw backgroundprocess.py > backgroundlog

Linux または Mac デバイスでバックグラウンド プロセスからの出力をログに記録する場合は、以下のコマンドを使用できます。

# python
python backgroundprocess.py > backgroundlog &

注意すべき重要な点の 1つは、バックグラウンド プロセスが生成する出力は、バックグラウンド プロセスが停止するまで、まずバッファ メモリに保存されるということです。 そのため、プロセスを停止すると、バックグラウンド プロセスからの出力のログまたはフラッシュのみを取得できます。

しかし、一部のデータが失われる可能性があるため、バックグラウンド プロセスを停止できない場合はどうでしょうか。 最初に出力をバッファ メモリに保存せずに、出力をファイルに直接記録する別の方法があります。

次のコマンドを使用できます。

pythonw -u backgroundprocess.py > backgroundlog

出力をファイルに直接記録する場合は、以下に示すように、Linux または Mac デバイスでこのコマンドを使用できます。

# python
python -u backgroundprocess.py > backgroundlog &

上記のコマンドは、出力を backgroundlog ファイルに直接追加します。 ただし、出力を取得するには、ターミナルを開いたままにしておく必要があります。

バックグラウンド プロセスが完了する前にターミナルを閉じると、すべてのプロセスが停止します。 実行していたすべてのプロセスが停止します。

Python には、あらゆる種類の問題に対する解決策が常に用意されています。 nohup と呼ばれる別のコマンドがあります。

このコマンドにより、バックグラウンド プロセスが干渉なしで完了するようになります。

親ターミナルを閉じても、バックグラウンド プロセスが確実に機能します。 nohup コマンドを使用するための構文を以下に示します。

nohup python -u backgroundprocess.py

上記の例は、必要に応じてチェックするために出力を別のファイルに記録するのを忘れたことを示しています。 nohup コマンドが自動的にログを生成し、それをファイルに保存して、バックグラウンド プロセスの実行中にすべてのレコードを確認できることを忘れていませんでした。

nohup コマンドは、すべてのログを nohup.out ファイルに保存します。 このプロセスを強制終了したい場合は、上記でこのプロセスを強制終了するために使用した kill コマンドを簡単に使用できます。

ただし、削除するプロセスの ID を覚えていない場合は、別のコマンドを使用して、バックグラウンド プロセスとして実行しているファイルの名前を取得できます。 そして、プロセス ID を見つけて、kill コマンドを使用してプロセスを強制終了します。

このコマンドの構文を以下に示します。

ps ax | grep backgroundprocess.py
Rana Hasnain Khan avatar Rana Hasnain Khan avatar

Rana is a computer science graduate passionate about helping people to build and diagnose scalable web application problems and problems developers face across the full-stack.

LinkedIn

関連記事 - Python Process