Blog JSystems - uwalniamy wiedzę!
Blog JSystems - uwalniamy wiedzę!
Moduł subprocess zastępuje: os.system(), os.spawn*(), commands.*(), os.popen*(), popen2.*() oferując nam wyższym model abstrakcji i większą wygodę wykorzystania. Omówimy tu dwie funkcje, jedna to call, druga Popen. Różnica polega na tym, że pierwsza powoduje wykonanie liniowe wywoływanej komendy w ramach wątku naszej aplikacji, druga generuje osobny proces w systemie operacyjnym.
Wywołamy ping na Onecie. Argumenty do funkcji call podajemy w postaci listy. Podajemy w niej kolejne komendy i ich parametry. Zasadniczo elementy zostaną rozdzielone spacjami i tak wykonane w systemie:
import subprocess
result=subprocess.call(['ping' ,'-n','10','onet.pl'])
print(f"result={result}")
print('koniec')
Wynik na konsoli:

Zastanawiać może enigmatyczne „result” odbierane od funcji. Jeśli komenda systemu operacyjnego wykona się z błędem, zostanie zwrócona wartość 1. Jeśli wszystko było ok dostaniemy 0. Wyświetliłem też komunikat „koniec” by zaprezentować liniowe wykonanie. Funkcja ta pozwala jeszcze na ustawienie argumentu shell=True, co spowoduje zaczytywanie zmiennych środowiskowych i generalnie wykonanie za pośrednictwem powłoki.
Wykonam tę samą czynność co w przykładzie funkcją call. Tym razem jednak użyję funkcji Popen powodującej uruchomienie czynności w osobnym procesie systemu operacyjnego:
import subprocess
result=subprocess.Popen(['ping','-n','2','onet.pl'])
print('koniec')
print(result.communicate())
Efekt:

Tym razem komunikat „koniec” wyświetlił się na początku. Widzimy dzięki temu że proces faktycznie rozpoczął się w osobnym procesie.
Ten kurs daje Ci solidne podstawy Pythona. Jeśli chcesz pójść dalej i pod okiem trenera dojść od pierwszej linijki kodu do własnego modelu uczenia maszynowego, sprawdź nasze pięciodniowe szkolenie Python od podstaw, przez analizę danych, do machine learning. Pierwsze trzy dni to Python w praktyce: typy i kolekcje, instrukcje warunkowe i pętle, funkcje, moduły i pakiety, pliki tekstowe, usługi sieciowe oraz praca z bazą PostgreSQL. Czwarty dzień to analiza danych w pandas (wczytywanie CSV, TSV i XLS, filtrowanie, agregacje, statystyki) i wizualizacja w Matplotlib, Seaborn oraz Plotly. Piąty dzień to uczenie maszynowe w scikit-learn: regresja liniowa i logistyczna, drzewa decyzyjne, las losowy, XGBoost, walidacja predykcji, dobór hiperparametrów i przeciwdziałanie przeuczeniu. Szkolenie ma terminy gwarantowane, czyli odbywa się niezależnie od wielkości grupy.
Szkolenie Python od podstaw, przez analizę danych, do machine learning
To szkolenie może być dofinansowane dla Ciebie z KFS lub BUR.
★★★★★Średnia ocena naszych szkoleń w Google: 5/5
Komentarze (0)
Brak komentarzy...