Hintergrundprozess in Python

Rana Hasnain Khan 10 Oktober 2023
  1. Hintergrundprozess in Python
  2. Hintergrundprozess in Windows in Python
  3. Hintergrundprozess in Linux oder Mac in Python
Hintergrundprozess in Python

Wir werden vorstellen, wie Python-Skripte im Hintergrund als Hintergrundprozess ausgeführt werden. Wir werden auch pythonw in Python einführen.

Hintergrundprozess in Python

In der Welt der Automatisierung und Datenwissenschaft sind wir so weit fortgeschritten, dass wir unsere täglichen Aufgaben leicht automatisieren und im Backend verarbeiten können, ohne uns zu aktualisieren (es sei denn, wir haben es so programmiert, dass es uns aktualisiert).

In diesem Artikel erfahren Sie, wie Sie ein Skript erstellen und es als Hintergrundprozess ausführen.

Die Hintergrundprozesse werden einmal ausgeführt und danach automatisch verarbeitet, wenn wir einen Computer starten, und sie stoppen, wenn wir unseren Computer ausschalten.

Wir können Hintergrundprozesse auch stoppen, indem wir zum Task-Manager gehen oder den Python-Befehl verwenden, um den Prozess mit seiner ID zu beenden.

Hintergrundprozess in Windows in Python

Es gibt zwei verschiedene Möglichkeiten, Python-Skripte als Hintergrundprozess auszuführen; Eine Methode ist die Verwendung von pythonw, mit der die Python-Skripte als Hintergrundprozess in Windows ausgeführt werden.

Wir werden pythonw verwenden, um unser Python-Skript als Hintergrundprozess auszuführen. Pythonw wird verwendet, um die Python-Skripte auszuführen, ohne das Terminalfenster zu verwenden.

Die Syntax zum Ausführen eines beliebigen Python-Skripts ohne Verwendung des Terminalfensters ist unten aufgeführt.

pythonw backgroundprocess.py

Wir können backgroundprocess.py durch den Dateinamen ersetzen, den wir im obigen Befehl als Hintergrundprozess ausführen möchten.

Hintergrundprozess in Linux oder Mac in Python

Um Python-Skripte als Hintergrundprozess unter Linux oder Mac auszuführen, verwenden wir den Operator & am Ende des Befehls, wodurch es als Hintergrundprozess ausgeführt wird.

Die Syntax zum Ausführen eines beliebigen Python-Skripts als Hintergrundprozess in Linux oder Mac ist unten.

# python
python backgroundprocess.py &

Wir können backgroundprocess.py durch den Dateinamen ersetzen, den wir im obigen Befehl als Hintergrundprozess ausführen möchten.

Sobald unser Skript als Hintergrundprozess ausgeführt wird, können wir nach der Prozess-ID suchen, um den Hintergrundprozess jederzeit zu stoppen. Wir können den folgenden Befehl in Windows verwenden, um den gerade gestarteten Prozess zu beenden.

kill -9 {{process id}}

Wenn wir den Prozess auf Linux- oder Mac-Geräten beenden möchten, können wir den folgenden Befehl ausführen.

kill -9 {{process id}} &

In den obigen Befehlen bedeutet -9, dass wir den Prozess so schnell wie möglich beenden möchten. Die Verwendung dieses Befehls beendet also den Prozess, dessen ID wir in den geschweiften Klammern angeben.

Wenn wir nun ein wichtiges Skript erstellt haben, für das wir überprüfen möchten, wie es funktioniert, und ein Update über das Skript erhalten möchten, das wir als Hintergrundprozess ausführen, können wir die Ausgabe dieses Skripts mithilfe von simple Befehl.

Der Befehl zum Protokollieren der Ausgabe unseres Hintergrundprozesses ist unten dargestellt.

pythonw backgroundprocess.py > backgroundlog

Wenn wir die Ausgabe unseres Hintergrundprozesses auf Linux- oder Mac-Geräten protokollieren möchten, können wir den folgenden Befehl unten verwenden.

# python
python backgroundprocess.py > backgroundlog &

Eine wichtige Sache zu beachten ist, dass die Ausgabe, die unser Hintergrundprozess generiert, zunächst im Pufferspeicher gespeichert wird, bis der Hintergrundprozess gestoppt wird. Daher können wir das Protokoll oder die Ausgabe von unseren Hintergrundprozessen nur abrufen, wenn wir den Prozess gestoppt haben.

Aber was ist, wenn wir den Hintergrundprozess nicht stoppen können, weil er riskieren könnte, einige Daten zu verlieren? Es gibt eine andere Möglichkeit, die Ausgabe direkt in die Datei zu protokollieren, ohne sie vorher in einem Pufferspeicher zu speichern.

Wir können den folgenden Befehl verwenden.

pythonw -u backgroundprocess.py > backgroundlog

Wenn wir die Ausgabe direkt in einer Datei protokollieren möchten, können wir diesen Befehl auf Linux- oder Mac-Geräten verwenden, wie unten gezeigt.

# python
python -u backgroundprocess.py > backgroundlog &

Der obige Befehl fügt nun direkt die Ausgabe in unsere backgroundlog-Datei ein. Aber wir müssen unser Terminal immer noch offen halten, um die Ausgabe zu erhalten.

Wenn wir das Terminal schließen, bevor unser Hintergrundprozess abgeschlossen ist, werden alle Prozesse gestoppt. Alle Prozesse, die wir ausgeführt haben, werden aufgehängt.

Python hat immer Lösungen für jede Art von Problem. Es gibt noch einen weiteren Befehl, der als nohup bekannt ist.

Dieser Befehl stellt sicher, dass unsere Hintergrundprozesse ohne Störungen abgeschlossen werden.

Selbst wenn wir das übergeordnete Terminal schließen, wird weiterhin sichergestellt, dass unsere Hintergrundprozesse funktionieren. Die Syntax zur Verwendung des Befehls nohup ist unten dargestellt.

nohup python -u backgroundprocess.py

Das obige Beispiel zeigt, dass wir vergessen haben, die Ausgabe in einer anderen Datei zu protokollieren, um sie bei Bedarf zu überprüfen. Wir haben nicht vergessen, dass der Befehl nohup automatisch ein Protokoll generiert und in einer Datei speichert, um alle Aufzeichnungen anzuzeigen, während unser Hintergrundprozess läuft.

Der Befehl nohup speichert alle Protokolle in der Datei nohup.out. Wenn wir diesen Prozess beenden möchten, können wir einfach den Befehl kill verwenden, den wir oben verwendet haben, um diesen Prozess zu beenden.

Wenn wir uns jedoch nicht an die ID des Prozesses erinnern, den wir löschen möchten, können wir einen anderen Befehl verwenden, um den Namen der Datei zu übernehmen, die wir als Hintergrundprozess ausführen. Und es findet die Prozess-ID und verwendet den Befehl kill, um den Prozess zu beenden.

Die Syntax für diesen Befehl ist unten dargestellt.

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

Verwandter Artikel - Python Process