Heim > Artikel > Backend-Entwicklung > Detaillierte Einführung in Unterprozessklassen und Konstanten in Python
Dieser Artikel bietet Ihnen eine detaillierte Einführung in die Unterprozessklasse und die Konstanten in Python. Ich hoffe, dass er für Freunde hilfreich ist.
Konstante
subprocess.DEVNULL: ein spezieller Wert, der an die Parameter stdin, stdout, stderr übergeben werden kann, was bedeutet, dass die Eingabe und Ausgabe mithilfe der speziellen Datei os.devnull umgeleitet werden
subprocess .PIPE: Ein spezieller Wert, der an die Parameter stdin, stdout, stderr übergeben werden kann, was bedeutet, dass Eingabe und Ausgabe mithilfe von Pipes umgeleitet werden
subprocess.STDOUT: Ein spezieller Wert, der sein kann Wird an den stderr-Parameter übergeben, was bedeutet, dass die Standardfehlerausgabe auf die Standardausgabe umgeleitet wird.
Popen
führt die Unterroutine in einem neuen Prozess aus.
Konstruktionsparameter
(args, bufsize=-1, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=True, Shell =False, cwd=Keine, env=Keine, universal_newlines=Keine, Startupinfo=Keine, Creationflags=0, Restore_signals=True, start_new_session=False, pass_fds=(), *, Encoding=Keine, Fehler=Keine, Text=Keine)
args: String oder Sequenz. Wenn es sich um eine Sequenz handelt, ist das erste Element in args das auszuführende Programm; wenn es eine Zeichenfolge ist, ist die Interpretation plattformabhängig. In POSIX-Systemen werden args als Name oder Pfad des auszuführenden Programms interpretiert. sofern dem Programm keine Parameter übergeben werden).
Shell: Gibt an, ob eine Shell als auszuführendes Programm verwendet werden soll. Wenn es auf „True“ gesetzt ist, wird eher die Verwendung von Argumentparametern vom Typ „String“ empfohlen.
Auf POSIX-Systemen verwendet shell=True standardmäßig /bin/sh
als Shell. Wenn args eine Zeichenfolge ist, stellt die Zeichenfolge den über die Shell auszuführenden Befehl dar. Wenn args eine Sequenz ist, gibt das erste Element das auszuführende Programm an und die anderen Elemente werden als Parameter behandelt.
In Windows-Systemen verwendet Shell=True standardmäßig die Shell, die durch die Umgebungsvariable COMSPEC
angegeben wird, normalerweise C:WINDOWSsystem32cmd.exe
. Das einzige Szenario, in dem „shell=True“ angegeben werden muss, ist, wenn es sich bei den auszuführenden Anweisungen um integrierte Shells handelt, z. B. dir
, copy
.
bufsize: wird beim Erstellen des stdin/stdout/stderr-Pipe-Dateiobjekts als entsprechender Parameter an die Funktion open()
übergeben.
0: Keine Pufferung verwenden
1: Zeilenpufferung verwenden
Andere positive Ganzzahlen: Puffergröße
Negative Ganzzahl (Standard): Systemstandardwert verwenden
ausführbare Datei: Es gibt nur sehr wenige Szenarien, in denen „shell=True“ verwendet wird. Wenn „shell=True“ ist, gibt dieser Parameter auf POSIX-Systemen an, dass ein neues Shell-Programm angegeben wird, das die Standard-Shell /bin/sh
ersetzt.
stdin/stdout/stderr: Geben Sie die Standardeingabe, die Standardausgabe bzw. den Standardfehler der Programmausführung an. Zu den optionalen Werten gehören PIPE
, DEVNULL
, vorhandener Dateideskriptor (positive Ganzzahl), vorhandenes Dateiobjekt und Keine. Dateihandles des untergeordneten Prozesses werden vom übergeordneten Prozess geerbt. Darüber hinaus kann stderr auch STDOUT
sein, was angibt, dass die Standardfehlerausgabe zur Standardausgabe umgeleitet wird.
preexec_fn: Beschränkt auf POSIX-Systeme, legt ein aufrufbares Objekt fest, das vor dem Programm im untergeordneten Prozess ausgeführt werden soll.
close_fds: Bei False folgt der Dateideskriptor der inheritable
-Identität, die in „Vererbung von Dateideskriptoren“ beschrieben wird.
Wenn True, werden unter POSIX-Systemen andere Dateideskriptoren als 0, 1 und 2 geschlossen, bevor der untergeordnete Prozess ausgeführt wird.
pass_fds: Nur POSIX, optionale Sequenz von Dateideskriptoren, um zwischen übergeordneten und untergeordneten Prozessen offen zu bleiben. Immer wenn dieser Parameter angegeben wird, wird close_fds auf „True“ gesetzt.
cwd: Ändern Sie das Arbeitsverzeichnis in cwd, bevor der untergeordnete Prozess ausgeführt wird. Dies kann eine Zeichenfolge oder ein pfadähnliches Objekt sein.
restore_signals: Begrenzt auf POSIX, leicht
start_new_session: Begrenzt auf POSIX, leicht
env: Ein Diktatobjekt, das Umgebungsvariablen für den neuen Prozess definiert und vom übergeordneten Prozess geerbte Variablen ersetzt. Unter Windows muss die Umgebungsvariable side-by-side assembly
zur Ausführung von SystemRoot
verfügbar sein. Wenn env angegeben ist, müssen alle Umgebungsvariablen bereitgestellt werden, von denen die Programmausführung abhängt
encoding/errors/text/universal_newlines: stdin/stdout/stderr ist standardmäßig auf Binärmodus Offen. Wenn jedoch „Encoding/Errors“ angegeben ist oder Text „True“ ist, wird „stdin/stdout/stderr“ im Textmodus mit der angegebenen Codierung und den angegebenen Fehlern geöffnet. Der Parameter universal_newlines entspricht aus Gründen der Abwärtskompatibilität Text.
Startinfo: Nur Windows, leicht
Erstellungsflags: Nur Windows, leicht
Methode
poll(): Überprüfen Sie, ob der untergeordnete Prozess beendet wurde. Geben Sie „None“ zurück, um anzugeben, dass der Vorgang nicht beendet wurde. Andernfalls legen Sie das Attribut „returncode“ fest und geben Sie zurück.
wait(timeout=None): Wenn der untergeordnete Prozess nach dem Timeout nicht beendet wird, wird die TimeoutExpired-Ausnahme ausgelöst. Andernfalls legen Sie das Returncode-Attribut fest und geben zurück.
communicate(input=None, timeout=None): Prozessinteraktion: Daten an stdin senden, Daten von stdout oder stderr lesen, bis das Endzeichen gelesen wird. Gibt ein Tupel in der Form (stdout_data, stderr_data) zurück. Der Tupeltyp ist string oder byte.
Eingabe ist „Keine“ oder die an den untergeordneten Prozess zu sendenden Daten, die je nach Stream-Öffnungsmodus vom Typ „String“ oder „Byte“ sein können.
Wenn Sie mit dem stdin des Prozesses interagieren möchten, müssen Sie beim Erstellen des Popen-Objekts stdin=PIPE angeben. Wenn Sie möchten, dass das zurückgegebene Tupel nicht None ist, müssen Sie ebenfalls stdout=PIPE und/oder stderr=PIPE festlegen.
Wenn der untergeordnete Prozess nach einer Zeitüberschreitung nicht beendet wird, wird eine TimeoutExpired-Ausnahme ausgelöst, aber der untergeordnete Prozess wird nicht beendet. Eine gute Anwendung sollte den untergeordneten Prozess beenden und die Interaktion beenden:
proc = subprocess.Popen(...) try: outs, errs = proc.communicate(timeout=15) except TimeoutExpired: proc.kill() outs, errs = proc.communicate()
send_signal( signal): Sendet ein Signal an den untergeordneten Prozess
terminate(): Beendet den untergeordneten Prozess. Senden Sie auf POSIX-Systemen das SIGTERM-Signal an den untergeordneten Prozess. Auf Windows-Systemen wird TerminateProcess() aufgerufen, um den Prozess zu beenden.
kill(): Zwangsweise Beendigung des untergeordneten Prozesses. Senden Sie auf POSIX-Systemen das SIGKILL-Signal an den untergeordneten Prozess. Kill() ist ein Alias vonterminate() auf Windows-Systemen.
Attribute
args: Übergeben Sie den ersten Parameter des Popen
-Konstruktors, der Liste oder des String-Typs
stdin: Wenn der an Popen übergebene stdin-Parameter PIPE ist, stellt dieses Attribut ein beschreibbares Stream-Objekt vom Typ String oder Byte dar. Wenn der an Popen übergebene stdin-Parameter nicht PIPE ist, ist der Wert dieses Attributs None
stdout: ähnelt Popen.stdin, aber das Stream-Objekt ist lesbar
stderr: Ähnlich wie Popen.stdout
pid: Prozess-ID des untergeordneten Prozesses. Wenn „shell=True“ festgelegt ist, gibt pid die Prozessnummer der abgeleiteten Shell an.
Rückgabecode: Rückgabecode des untergeordneten Prozesses. „None“ gibt an, dass der Prozess nicht beendet wurde. Eine negative Zahl -N bedeutet, dass der Prozess durch Signal N beendet wurde (nur POSIX).
run()
Der Rückgabewert der Funktionsausführung, der angibt, dass die Prozessausführung abgeschlossen ist.
Attribute
Argumente: Übergeben Sie den ersten Parameter der run()
Funktion, Liste oder des String-Typs
Rückgabecode: Exit-Code für den untergeordneten Prozess. Wenn es sich um eine negative Zahl handelt, bedeutet dies, dass der Prozess aufgrund eines bestimmten Signals beendet wurde.
stdout: Die Standardausgabe des erfassten untergeordneten Prozesses. Der Standardwert ist der Bytetyp, wenn Codierung oder Fehler werden angegeben, wenn die Funktion run()
aufgerufen wird, oder String-Typ, wenn text=True festgelegt ist. Wenn die Standardausgabe nicht erfasst wird, wird None zurückgegeben
stderr: Der Standardfehler des erfassten untergeordneten Prozesses, standardmäßig Byte-Typ, wenn beim Funktion wird aufgerufen oder set text=True ist vom Typ String. Wenn der Standardfehler nicht abgefangen wird, geben Sie None zurückrun()
check_returncode(): Wenn der Rückgabecode ungleich Null ist, lösen Sie eine AusnahmeCalledProcessError
cmd: Befehl
Timeout: Zeit in Sekunden
Ausgabe: oder run()
Die Ausgabe des untergeordneten Prozesses, die von der Funktion erfasst wird, andernfalls Keinecheck_output()
stdout: Ausgabeattribut-Alias
stderr : Die Fehlerausgabe des von der Funktion erfassten Unterprozesses, andernfalls Nonerun()
oder check_call()
, wenn die Funktion einen Wert ungleich 0 zurückgibt Statuscode werfen. check_output()
Rückgabecode: Exit-Code des untergeordneten Prozesses. Wenn es sich um eine negative Zahl handelt, bedeutet dies, dass der Prozess aufgrund eines bestimmten Signals beendet wurde.
cmd: Das Gleiche wie TimeoutExpired
Ausgabe: Das Gleiche als TimeoutExpired
stdout: Gleiche wie TimeoutExpired
stderr: Gleiche wie TimeoutExpired
Dieser Artikel ist hier Um spannende Inhalte zu erhalten, können Sie der RubrikPython-Video-Tutorial der chinesischen PHP-Website folgen!
Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in Unterprozessklassen und Konstanten in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!