[Unterprozess] Wenn Sie ein anderes Python-Programm in Python-Code ausführen möchten

Einführung

Ich habe mehrere Codes in Python geschrieben und möchte, dass ein Programm den Start von ihnen steuert. Es gibt solche Zeiten. Dieses Mal werde ich vorstellen, wie Sie ein anderes Programm ausführen, das Sie asynchron aus den Programmen heraus starten möchten.

Umgebung

Windows10 python 3.7.6 anaconda 20.02

Der Hauptcode dieser Zeit

import subprocess

command = [python (Datei).py (Streit)]
proc = subprocess.Popen(command)  #->Befehl wird ausgeführt(Warten Sie nicht bis zum Ende der Verarbeitung)
result = proc.communicate()  #->Warten Sie bis zum Ende

Codebeispiel

Es ist ein Code ohne jede Wendung, aber ich habe zwei Dateien als Test erstellt, um zu sehen, ob er vorerst funktioniert. call.py dient zur Ausgabe des angegebenen Arguments. Listen Sie die Befehle auf, indem Sie sie in durch Leerzeichen getrennte "" einschließen.

call.py


import sys
from time import sleep

sleep(1)  #Schlaf für eine Sekunde(Um zu überprüfen, ob es asynchron ist)
args = sys.argv[1]
print(args)

main.py


import subprocess

command = ["python","call.py,"Ich wurde angerufen!"]
proc = subprocess.Popen(command)
print("Berufung")
proc.communicate()

** Ausführungsergebnis ** 0807_subprocesspopen.png

Da der "Aufruf" von main zuerst gedruckt wird, Sie können sehen, dass ** nicht auf den von subprocess.Popen () ** ausgeführten Prozess wartet.

Informationen zur Bearbeitungszeit

Wenn ich es mit subprocess.Popen () aufrufe, mache ich mir Sorgen um ** Verarbeitungszeit **. Rufen wir call_2.py auf, das die folgende Verarbeitung für ein 1280 x 800-Bild ausführt.

call_2.py


from time import time
import numpy as np
import cv2

start =  time()

img = cv2.imread("sample.png ")
resize = cv2.resize(img,dsize=None,fx=0.5,fy=0.5)  #resize

kernel = np.ones((5,5),np.uint8)
erosion = cv2.erode(resize,kernel)  #erode

cv2.imwrite("resize.png ",erosion)

end = time() - start
print(end)

Jetzt, wenn Sie es mit Python main.py ausführen und wenn Sie es mit Python call_2.py ausführen Ich habe die Zeit des zu druckenden Endes verglichen. Ich habe mehrmals versucht, die Konsole zu betreten und zu verlassen. ** Die Verarbeitungszeit war ungefähr gleich, unabhängig davon, ob sie sich im Cache befand oder nicht **. (Die tatsächliche Anzahl wird weggelassen, da sie von der Ausführungsumgebung abhängt.)

abschließend

Ich habe Ihnen gezeigt, wie Sie eine andere py-Datei mit subprocess.Popen () ausführen. In der Windows-Umgebung gab es keinen Unterschied in der Verarbeitungsgeschwindigkeit. Ich bin froh, dass es keinen Geschwindigkeitsengpass gibt. Es kann sich jedoch ändern, wenn die Umgebung Linux ist.

Wir hoffen, Sie finden dies hilfreich.

Referenzmaterial

** Bitte beachten Sie auch die folgende Seite ** Offizielle Dokumentation (Python 3.8.5) Wenn die Datei, die Sie ausführen möchten, in einem anderen Verzeichnis vorhanden ist Shell-Befehl von Python ausführen! Zusammenfassung, wie ein Unterprozess mit einem Unterprozess ausgeführt wird Linux-Befehl von Python mit Unterprozess ausführen

** Ein Buch, das hilfreich zu sein scheint (ich möchte es nur lesen ...) ** Expert Python Programming Revised 2nd Edition

Recommended Posts

[Unterprozess] Wenn Sie ein anderes Python-Programm in Python-Code ausführen möchten
[Python] Wenn Sie alle Variablen in einer anderen Datei verwenden möchten
[Python3] Code, der verwendet werden kann, wenn Sie die Größe von Bildern Ordner für Ordner ändern möchten
Ich möchte in Python schreiben! (1) Überprüfung des Codeformats
Python Gibt die Funktion an, die ausgeführt werden soll, wenn das Programm endet
Wenn Sie in der for-Anweisung plt.save möchten
So führen Sie einen Befehl mit einem Unterprozess in Python aus
Ich möchte am Ende etwas mit Python machen
[Python3] Code, der verwendet werden kann, wenn Sie ein Bild in einer bestimmten Größe ausschneiden möchten
[Django] Memorandum, wenn Sie asynchron kommunizieren möchten [Python3]
Ich möchte Python mit VS-Code ausführen können
Wenn Sie einen UNIX-Befehl in Python ausführen möchten
Beim Schreiben eines Programms in Python
[Kleine Geschichte] Eine sorgfältige Maßnahme, wenn Sie vor dem Import in Python eine Funktion ausführen müssen
[Python] Wenn Sie Ihr eigenes Paket im oberen Verzeichnis importieren und verwenden möchten
Möchten Sie mit Python Selenium auf allgemeine Zwecke warten?
Moduszeile, wenn Sie den entsprechenden Python-Code in Vim öffnen
Wenn Sie einer Variablen in Python einen CSV-Export zuweisen möchten
Wenn Sie diff in Python ausführen und sowohl Rückkehrcode als auch Ausgabe wünschen
Artikel zum Lesen, wenn Blenders Python-Skriptcode in 2.80 nicht funktioniert
Wenn Sie mehrere Zeichen in einer Zeichenfolge ersetzen möchten, ohne reguläre Ausdrücke in der Python3-Serie zu verwenden
Python Hinweis: Wenn Sie die Attribute eines Objekts kennen möchten
Wenn Sie Wörter in Python zählen möchten, können Sie bequem Counter verwenden.
Ich möchte Dunnetts Test in Python machen
Ich möchte mit Python ein Fenster erstellen
Wenn Sie den Chrome-Treiber aktualisieren möchten.
Persönliche Notizen zum Dokumentieren von Python-Code in Sphinx
Ich möchte verschachtelte Dicts in Python zusammenführen
Ich möchte C ++ - Code aus Python-Code erstellen!
Fehler beim Versuch, psycopg2 in Python zu installieren
Ich möchte den Fortschritt in Python anzeigen!
Konvertieren Sie kubischen Netzcode in Python in WKT
So erstellen Sie eine Umgebung, wenn Sie Python2.7 nach der Installation von Anaconda3 verwenden möchten
Bei der Konvertierung von CSV in JSON mit Python bin ich auf einen Zeichencode gestoßen
Verwenden Sie PIL in Python, um nur die gewünschten Daten aus Exif zu extrahieren
[Python] Dinge, die überprüft werden müssen, wenn in Django ein Unicode-Dekodierungsfehler auftritt
Python-Programm ist langsam! Ich möchte beschleunigen! In einem solchen Fall ...
[Python3] Code, der verwendet werden kann, wenn Sie die Erweiterung eines Bildes sofort ändern möchten
Ich möchte eine Variable in einen Python-String einbetten
Ich möchte Timeout einfach in Python implementieren
Dinge, die Sie bei der Entwicklung von Crawlern in Python beachten sollten
Schreiben Sie Python2-Code in Python3 um (2to3)
Ich möchte in Python schreiben! (2) Schreiben wir einen Test
Einstellungen, wenn Sie Python-Mecab mit Travis ausführen möchten
Auch mit JavaScript möchte ich Python `range ()` sehen!
Ein Memorandum beim Schreiben von experimentellem Code ~ Anmelden in Python
Dinge, die Sie beim Kopieren von Python-Listen beachten sollten
Ich möchte eine Datei mit Python zufällig testen
Was tun, wenn beim Importieren von matplotlib in Python (Mac) eine Fehlermeldung angezeigt wird?
Wenn Sie mit dem Django REST-Framework filtern möchten
Ich möchte mit einem Roboter in Python arbeiten.
Beachten Sie beim Initialisieren einer Liste in Python
Ich möchte die Variablen in der Python-Vorlagendatei ersetzen und in einer anderen Datei in Massenproduktion herstellen
Ich möchte in Python schreiben! (3) Verwenden Sie Mock
Verwenden Sie communic (), wenn Sie eine Ausgabe in einem Python-Unterprozess empfangen