Jak używać podprocesów Python z rurami?

Jak używać podprocesów Python z rurami?
Python jest najczęstszym językiem wysokiego poziomu idealnego dla początkujących. Jest przydatny do uczenia maszynowego, tworzenia stron internetowych i innych funkcji. Jest to jeden z najprostszych i dostępnych języków programowania, który pomaga programistom pisać jasny, precyzyjny i prosty kod. Zapewnia wiele wbudowanych funkcji, łatwe do zrozumienia metody i kilka podprocesów, które pozwalają użytkownikowi wykonywać polecenia Linuksa, C, C ++ lub Java bezpośrednio z Python. W tym artykule omówiono zastosowanie podprocesów w Pythonie i wyjaśni, w jaki sposób te podprocesy można łączyć z rurami. Więc zacznijmy.

Oficjalna dokumentacja Pythona zawiera szczegółowe wyjaśnienie podprocesów w Python i sposobu korzystania z podproces Python z rurami, i jest korzystna dla celów zrozumienia i rozwoju. Jednak pełna dokumentacja może być nieco przytłaczająca dla początkujących. Ponadto składnia może różnić się w zależności od wersji do innej wersji Pythona, która może mylić początkujących.

Dlatego mamy dla Ciebie rozwiązanie i tutaj wyjaśniamy proces używania podproces Python z rurami. Wyjaśnimy ten proces za pomocą przykładów, więc idźmy dalej, aby zobaczyć przykłady, ale najpierw zobaczmy, czym jest rura dla podproces w Python. Rura w Pythonie służy do wysyłania lub odbierania danych z programu, który działa jako podproces w Python. Aby to zrobić, możemy użyć kombinacji rura który w zasadzie tworzy fajkę, a widelec służy do utworzenia podprocesów w programie, dup2 służy do wymuszenia podproces do użycia rury jako standardowego kanału wejściowego i wyjściowego, a na koniec, Exec służy do wykonywania lub uruchamiania nowego programu. Ponadto Popen i PCLose są używane odpowiednio do otwarcia lub zamknięcia programu.

Zaletą używania Popen i PCLose jest to, że sugeruje prosty i łatwy w użyciu interfejs. Nie zapewnia jednak dużej elastyczności, ponieważ bezpośrednio wykorzystuje funkcje niskiego poziomu. Zobaczmy poniższe przykłady.

Przykład 1:

Pierwszy przykład wyjaśni, jak zakodować polecenie zawierające rurę i przekierowanie. Zobaczmy przykład:

ZCAT F1.Dat.GZ F2.Dat.GZ | pigz> out.GZ

Oto kod Pythona, który wyjaśnia, jak zaimplementować polecenie UNIX z podprocesem w Python.

P1 = podproces.Popen ([„zcat”, „f1.Dat.gz "," f2.Dat.GZ "],
stdout = podproces.RURA)
fout = otwarty („out.gz ', „wb”)
P2 = podproces.RUN (['pigz'], stdin = p1.stdout, stdout = fout) a

Zauważ, że metoda Popen () jest stosowana z pierwszym podprocesem, podczas gdy metoda run () jest używana z drugim wywołaniem, które koduje przekierowania. Kolejny błąd zostanie spowodowany, jeśli metoda run () zostanie użyta z samą ruro.

Przykład 2:

Ten przykład wyjaśni, w jaki sposób program Python zapyta nazwisko użytkownika. Następnie echo to z komunikatem z życzeniami i wielokrotnie prosi o nazwy, dopóki użytkownik nie wejdzie do wyjścia.„Gdy użytkownik wejdzie„ wyjście ”w odpowiedzi na zapytanie o nazwę, czy warunek spotkał się z danymi kryteriami i wykonaniem programu, kończy się. Zobacz kod podany poniżej.

Import Sys
Drukuj („Jakie masz na imię?")
dla nazwy w ITER (sys.stdin.Czytaj linię, "):
Nazwa = nazwa [:-1]
Jeśli nazwa == „wyjście”:
przerwa
Drukuj („Cóż, jak się masz 0?".format (nazwa))
wydrukuj ("\ n jak masz na imię?")

Oto powtarzane dane wyjściowe powyższego kodu, które kończy się tylko wtedy, gdy użytkownik wchodzi.'

Przykład 3:

Ten przykład jest trochę skomplikowany, ale łatwy do zrozumienia i użycia. Wyjaśni, jak kontrolować wejście i wyjście programu za pomocą rury i podproces w Python. Najpierw zobaczmy kod.

importować podproces
Import Sys
Proc = podproces.Popen ([„Python”, „CallMyname.py "])
Podczas gdy Proc.ReturnCode to brak:
Proc.głosowanie()
Proc = podproces.Popen ([„Python”, „CallMyname.py "],
stdin = podproces.Rura, stdout = podproces.RURA)
Proc.stdin.Write („Alex \ n”)
Proc.stdin.Napisz („Jhon \ n”)
Proc.stdin.zamknąć()
Podczas gdy Proc.ReturnCode to brak:
Proc.głosowanie()
Drukuj („Wróciłem z programu dziecięcego to: \ n 0”.Format (Proc.Stdout.Czytać()))

Podproces.Popen () bierze dwa nazwane argumenty, jeden to stdin, a drugi to stdout. Oba te argumenty są opcjonalne. Argumenty te służą do ustawienia rury, której proces dziecięcy używa jako stdin i stdout. Podproces.Rura jest przekazywana jako stała, aby któryś z podproces.Popen () lub podproces.Rurka, że ​​użytkownik określa, że ​​chce powstania. Proces potomny o nazwie CallMyname.PY jest tworzony w programie. Dwa nazwiska są przekazywane do CallMyname.PY przed wysłaniem sygnału EOF na wejście dziecka. Proces macierzysty czeka na zakończenie procesu dziecka, zanim odczytuje wynik wytworzony przez proces dziecka. Poniżej znajduje się dane wyjściowe powyższego kodu.

Jak widać, używanie rur z podprocesem w Pythonie jest proste. Jeśli postępujesz zgodnie z powyższymi przykładami, możesz łatwo nauczyć się użycia rur z podprocesami w Python.

Wniosek:

Ten artykuł dotyczy sposobu korzystania z podproces Python z rurą. Najpierw krótko wprowadziliśmy, czym jest rura podproces w Pythonie, a następnie podaliśmy kilka przykładów, aby wyjaśnić, jak używać rury z podprocesem w Pythonie.