Przykład wieloprocesowy Python

Przykład wieloprocesowy Python

Python to język programowania, który jest korzystny w tworzeniu stron internetowych i aplikacji. Również zaangażowany w wizualizację danych i analizę. Jest to stosunkowo łatwy język i jest często używany przez nawet nie-programistów. Ten artykuł odnosi się do użycia multiprocessingu w Pythonie.

Multiprocessing

Wieloprocesowe dotyczy potencjału systemu, który obsługuje więcej niż jeden procesor jednocześnie. Wszystkie zastosowania w wieloprocesowym są zburzone w małe wzory, a każdy z tych wzorców jest samodzielny w pracy. W tego rodzaju procesie stosuje się dwa lub więcej procesów. Rozważmy tylko, że komputer działa przy użyciu jednego procesora. Jeśli przypisamy kilka procesorów jednocześnie, po krótkim czasie uruchomiłby to przełączanie każdego zadania do innego zadania, aby utrzymać wszystkie procesy. Innymi słowy, jeśli należy wykonać więcej zadań, trudniejsze, będzie to utrzymanie ich na bieżąco. Podczas gdy przydzielenie każdego zadania równego czasu jest również dużym wyzwaniem. W tym stanie musimy powstać koncepcja wieloprocesowego. System wieloprocesowy może pozwolić.

  • Wieloprocesor: Komputer, który korzysta z więcej niż jednego centralnego procesora.
  • Procesor wielordzeniowy: Pojedynczy komponent, który używa dwóch lub więcej jednostek przetwarzania.

Wieloprocesowy w Pythonie

Korzystając z koncepcji wieloprocesowej, centralna jednostka przetwarzania może łatwo wykonać kilka zadań w jednym czasie. Python używa modułu wieloprocesowego do wprowadzenia równoległych kodów. Aby wdrożyć multiprocessing, najpierw musisz wiedzieć o liczbie rdzeni w swoim systemie. Użyliśmy tutaj jednego fragmentu kodu, aby wiedzieć o działaniu procesorów.

W przypadku Pythona możesz użyć dowolnego innego narzędzia do realizacji kodów. W tym celu użyliśmy narzędzia Spyder, które z pewnością wykonają kody językowe Pythona.

Importować multiprocessing

Drukuj („Liczba procesora:”, multiprocessing.cpu_count ())

Po pierwsze, musimy zaimportować pakiet „PG”, który umożliwi działanie. Dla każdego komputera wyjście może się różnić. Dla mnie liczba rdzeni to 4.

Przykład 1:

Korzystając z modułu wieloprocesowego, obliczymy funkcje kostki i kwadratowe.

Zrozumiemy wyżej wymienionego kodu. Stworzyliśmy proces, a następnie stworzyliśmy obiekt do przetworzenia klasy.

P1 = multiprocessing.proces (print_cube (5,)))
P2 = multiprocessing.proces (print_square (2,)))

P1 i P2 to obiekty procesów. Procesy te zawierają funkcjonalne połączenie z funkcją drukowania, która bezpośrednio wywoła funkcję z argumentami jako parametr. Print_cube i print_square.

Używamy metod początkowych, aby rozpocząć proces.

P1.początek()
P2.początek()

Jedna z zastosowanych funkcji jest opisana jako.

def print_square (num):
print („Square: ”.format (num * num))

Funkcja kwadratowa obliczy kwadrat, pomnożąc podaną liczbę używaną w wywołaniu funkcji. Funkcja przyjmuje liczbę w zmiennej „NUM”.

Po wykonaniu kodu dane wyjściowe wyświetli wynikowe wartości obu funkcji.

Przykład 2:

Korzystając z struktur danych, musisz znać stosowanie stosów i kolejki w języku programowania. Z modułu wieloprocesowego importujemy tutaj klasę kolejki, która jest FIFO (pierwsza w pierwszej strukturze danych). Będą dwa procesy, które działają alternatywnie. Używamy dwóch funkcji tutaj. Funkcja put () jest używana tutaj do wstawienia danych do kolejki. Podczas gdy używamy get () do pobierania elementów z kolejki. Poniżej znajduje się kod, który ilustruje działanie wieloprocesowego w kolejce. Pierwszym krokiem jest wprowadzenie kolejek.

Z wieloprocesowej kolejki importu

Po zaimportowaniu modułu wprowadzaj nazwy samochodów do zmiennej tablicy. Użyjemy pętli do wstawienia wartości do kolejki, a put () to zrobi. Zmienna „CNT” służy do zliczenia liczby używanych samochodów. Zainicjuj obiekt kolejki poprzez instrukcję.

Kolejka = kolejka ()

Następnie do dodawania wartości jest używana pętla; Użyje to słowa kluczowego „kolejki”, aby użyć funkcji put (. Funkcja „CNT” zostanie zwiększona po każdym wstawce.

Do samochodu w samochodach:

Kolejka.Put (samochód)
CNT += 1

Podobnie dla put () pętla white jest używana, aż cała kolejka nie będzie pusta.

Choć nie w kolejce.pusty():

Drukuj („Pozycja nr: ', cnt,”, kolejka.Dostawać())
CNT+= 1

Wyjście pokazuje obie funkcje działające niezależnie. Gdy funkcja zakończy swoją pracę, drugi proces jest używany.

Przykład 3:

Ten przykład zawiera dwa procesy. W każdym procesie „PID” uzyskuje się za pośrednictwem funkcji get (). Użyliśmy dwóch modułów. Jeden to multiprocessing, a drugi to system operacyjny.

Każdy proces jest przeznaczony na inny identyfikator.

Def proces ():

Drukuj („ID procesu działającego pracownika 1: ”.Format (OS.getPid ()))

Wiadomość jest połączona z wywołaniem funkcji, aby otrzymać identyfikator procesu. W programie głównym główny identyfikator procesu jest pobierany przy użyciu tego samego podejścia za pośrednictwem get (). Następnie procesy są tworzone poprzez multiprocessing. Do każdego procesu jest dostępny za pośrednictwem odpowiednich obiektów. I.mi., Dla procesu 1 obiekt to P1.

P1 = multiprocessing.Proces (cel = proces1)

Cel to funkcja, która ma być wykonywana przez proces. W miarę tworzenia procesów muszą zacząć. Wyświetlany jest status każdego procesu; W tym celu musimy monitorować zakończenie procesu. Będzie to wymagało czasu, aby poczekać. Użyjemy funkcji, która będzie czekać do całkowitego wykonania procesu.

P1.dołączyć()

Gdy ta funkcja połączenia otrzyma sygnał, drukuje oświadczenie, że wykonanie jest zakończone. Flaga logiczna określi albo proces żyje lub nie; Jeśli tak, to prawda, w przeciwnym razie jest to fałszywe.

Drukuj („proces P1 jest żywy: ”.format (P1.żyje()))

Teraz wykonaj program i weź wyjście. Możesz to zobaczyć najpierw, główny identyfikator jest wyświetlany, a następnie identyfikator procesu każdego procesu. Po zakończeniu wykonania status jest wyświetlany dla obu procesów, czyli „fałszywy”.

Przykład 4:

W tym przykładzie zobaczysz działanie czasu wieloprocesowego i importu, puli, cpu_count. Pula służy do wykonywania procesów z wieloma wejściami i rozpowszechniania tych danych wejściowych między procesami. Funkcja kwadratowa obliczy kwadrat wartości wejściowej. Korzystając z modułu czasu z opakowania, użyjemy funkcji snu.

Czas.sen (3)

Ta funkcja ma rozszerzenie czasu o 3 sekundy. Oznacza to, że wartość tej funkcji zostanie pokazana po tym konkretnym czasie. W programie głównym rozpoczynamy licznik czasu, a następnie przydzielane są wartości manekinu każdego 4 rdzeni.

Z basenem () jako basen:

Res = pula.Mapa (kwadrat, wartości)
Drukuj (res)

Funkcja puli podaje wartości i wywołuje funkcję w tym samym czasie. Następnie musimy zatrzymać licznik czasu. Ta funkcja timera będzie liczyć sekundy użyte dla tej funkcji, zwane czasem upływu; jest uzyskiwany przez odejmowanie wartości rozpoczęcia czasu od wartości końcowej.

Teraz wykonaj program. Pierwsza linia jest wyświetlana, a następnie zajmuje 3 sekundy. Następnie pokazano inny wynik.

Wniosek

„Przykład wieloprocesowy Pythona” jest krótkim wprowadzeniem do zjawiska wieloprocesowego. Każdy przykład wyjaśniony tutaj importuje różne pakiety z modułu wieloprocesowego. To obsługa procesów równolegle do siebie odbywa się poprzez liczbę procesorów. Więcej liczba procesorów będzie szansa na dobre multiprocessing.