Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Einführung in Unterprozessklassen und Konstanten in Python

Detaillierte Einführung in Unterprozessklassen und Konstanten in Python

不言
不言nach vorne
2019-03-29 10:57:212544Durchsuche

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).

CompletedProcess

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()

Methode

check_returncode(): Wenn der Rückgabecode ungleich Null ist, lösen Sie eine AusnahmeCalledProcessError

aus Ausnahme

subprocess.SubprocessError

Ausnahmebasisklasse des Unterprozessmoduls

subprocess.TimeoutExpired

Zeitüberschreitung bei der Ausführung des Unterprozesses.

Eigenschaften

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()

subprocess.CalledProcessError

oder check_call(), wenn die Funktion einen Wert ungleich 0 zurückgibt Statuscode werfen. check_output()

Attribute

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 Rubrik

Python-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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen