Python wieloprocesowa dla pętli

Python wieloprocesowa dla pętli

Wieloprocesowe jest porównywalne z wielowy. Jednak wyróżnia się tym, że możemy wykonać tylko jeden wątek w jednej chwili z powodu GIL, który jest stosowany do wątku. Wieloprocesowe to proces wykonywania operacji sekwencyjnych w kilku rdzeniach procesora. Wątek nie można obsługiwać równolegle. Jednak wieloprocesowe pozwala nam ustalić procesy i uruchomić je jednocześnie na różnych rdzeniach procesora. Pętla, taka jak za pętla, jest jednym z najczęściej używanych języków skryptowych. Powtórz tę samą pracę przy użyciu różnych danych do momentu osiągnięcia kryterium, takich jak z góry określona liczba iteracji. Pętla wykonuje każdą iterację jeden po drugim.

PRZYKŁAD 1: Korzystanie z pętli w module wieloprocesowym Python

W tym przykładzie używamy procesu klas modułów wieloprocesowych i Python. Zaczynamy od bardzo prostego przykładu, abyś mógł szybko zrozumieć, jak działa wieloprocesowy Python dla pętli. Za pomocą interfejsu, który jest porównywalny z modułem gwintowania, wieloprocesowy pakuje tworzenie procesów.

Zastosowanie podprocesów, a nie wątków, pakiet wieloprocesowy zapewnia zarówno lokalną, jak i odległą współbieżność, unikając w ten sposób globalnej blokady interpretera. Użyj pętli, która może być obiektem stringowym lub krotką, aby nieustannie iterować sekwencję. Działa to mniej podobnie jak słowo kluczowe widoczne w innych językach programowania, a bardziej jak metoda iteratora znaleziona w innych językach programowania. Rozpoczynając nowe multiprocessing, możesz uruchomić za pętlę, która wykonuje procedurę jednocześnie.

Zacznijmy od wdrożenia kodu wykonania kodu, wykorzystując narzędzie „Spyder”. Uważamy, że „Spyder” jest również najlepszy do biegania w Pythonie. Importujemy proces modułu wieloprocesowego, który uruchomi się kod. Multiprocessing in Concept Python nazywany „klasą procesu” tworzy nowy proces Pythona, daje mu metodę wykonywania kodu i daje aplikacji nadrzędnej sposób zarządzania wykonaniem. Klasa procesu zawiera procedury start () i dołączanie (), które są kluczowe.

Następnie definiujemy funkcję zdefiniowaną przez użytkownika o nazwie „FUNC”. Ponieważ jest to funkcja zdefiniowana przez użytkownika, podajemy jej nazwę naszego wyboru. Wewnątrz ciała tej funkcji przekazujemy zmienną „podmiot” jako argument i wartość „matematyki”. Następnie nazywamy funkcję „print ()”, przekazując stwierdzenie „nazwa wspólnego podmiotu to”, a także jego argument „podmiot” zawierający wartość. Następnie, w poniższym etapie, używamy „if name == _main_”, co uniemożliwia uruchomienie kodu, gdy plik jest importowany jako moduł i pozwala na to, gdy treść jest wykonywana jako skrypt.

Sekcja warunku, z którą zaczynasz, można w większości przypadków traktować się jako lokalizacja do dostarczenia treści, która powinna być wykonywana tylko wtedy. Następnie używamy przedmiotu argumentu i przechowujemy niektóre wartości, które są „nauką”, „angielski” i „komputer”. Proces jest następnie podany nazwa „proces1 []” w następnym etapie. Następnie używamy „procesu (cel = func)”, aby wywołać funkcję w procesie. Cel służy do wywołania funkcji, a my zapisujemy ten proces w zmiennej „P”.

Następnie używamy „procesów.”Ponieważ proces jest przechowywany w zmiennej„ P ”, przekazujemy„ P ”do tej funkcji jako jej argument. Wreszcie, używamy funkcji „start ()” z „P”, aby rozpocząć proces. Następnie ponownie uruchamiamy metodę, dostarczając argument „podmiot” i używamy „dla” w temacie. Następnie, przy użyciu metody „procesu1” i metody „add ()”, rozpoczynamy proces. Następnie proces działa, a wyjście jest zwracane. Procedura ma następnie zakończyć się przy użyciu techniki „dołącz ()”. Procesy, które nie wywołują procedury „dołącz ()”, nie wyjdą. Jedną kluczową kwestią jest to, że parametr kluczowego „args” musi zostać użyty, jeśli chcesz podać jakiekolwiek argumenty w trakcie procesu.


Teraz możesz zobaczyć, że instrukcja jest wyświetlana najpierw, przekazując wartość podmiotu „matematyki”, który przekazujemy do funkcji „FUNC”, ponieważ najpierw nazywamy ją za pomocą funkcji „proces”. Następnie używamy polecenia „append ()”, aby mieć wartości, które były już na liście, które są dodawane na końcu. Następnie przedstawiono „naukę”, „komputer” i „angielski”. Ale, jak widać, wartości nie są we właściwej sekwencji. Dzieje się tak, ponieważ robią to tak szybko, jak procedura jest zakończona i zgłaszają swoją wiadomość.

Przykład 2: Konwersja sekwencyjnej formy do wieloprocesowej równoległej dla pętli

W tym przykładzie zadanie pętli wieloprocesowej jest wykonywane sekwencyjnie przed przekonwertowaniem na równoległe zadanie dla pętli. Możesz przełączać się przez sekwencje, takie jak kolekcja lub ciąg w kolejności, używając za pomocą pętli.

Teraz zacznijmy wdrażać kod. Najpierw importujemy „Sleep” z modułu czasu. Korzystając z procedury „sleep ()” w module czasu, możesz zawiesić wykonanie wątku wywoławczego tak długo, jak chcesz. Następnie używamy „losowego” z modułu losowego, definiujemy funkcję o nazwie „FUNC” i przekazujemy słowo kluczowe „argu”. Następnie tworzymy losową wartość za pomocą „VAL” i ustawiamy ją na „losowy”. Następnie blokujemy przez niewielki okres przy użyciu metody „sleep ()” i przekazujemy „val” jako parametr. Następnie, aby przekazać wiadomość, uruchamiamy metodę „print ()”, przekazując słowa „gotowe” i słowo kluczowe „arg” jako jej parametr, a także „utworzone” i przekazuje wartość za pomocą „Val”.

Na koniec używamy „spłukiwania” i ustawiamy go na „true”. Użytkownik może zdecydować, czy buforować wyjście za pomocą opcji spłukiwania w funkcji drukowania Pythona. Domyślna wartość False tego parametru wskazuje, że wyjście nie zostanie buforowane. Wyjście jest wyświetlane jako seria linii podążających za sobą, jeśli ustawisz je na true. Następnie używamy „If Name == Main”, aby zabezpieczyć punkty wejścia. Następnie wykonujemy zadanie sekwencyjnie. Tutaj ustawiamy zakres na „10”, co oznacza, że ​​pętla kończy się po 10 iteracjach. Następnie wywołujemy funkcję „print ()”, przekazujemy ją „gotową” instrukcję i używamy opcji „fufle = true”.


Możesz teraz zobaczyć, że podczas wykonywania kodu pętla powoduje, że funkcja uruchamia „10” razy. Itera do 10 razy, zaczynając od zera indeksu i kończąc na indeksie dziewięć. Każda wiadomość zawiera numer zadania, który jest numerem funkcji, który przekazujemy jako „arg” i numer tworzenia.


Ta sekwencyjna pętla jest teraz przekształcana w wieloprocesowy równolegle dla pętli. Używamy tego samego kodu, ale przechodzimy do dodatkowych bibliotek i funkcji dla wieloprocesowego. Dlatego musimy zaimportować proces z multiprocessing, tak jak wyjaśniliśmy wcześniej. Następnie tworzymy funkcję o nazwie „FUNC” i przekazujemy słowo kluczowe „Arg” przed użyciem „val = losowo”, aby uzyskać liczbę losową.

Następnie, po wywołaniu metody „print ()”, aby wyświetlić wiadomość i podać parametr „VAL” do opóźnienia niewielkiego okresu, używamy funkcji „If Name = Main”, aby zabezpieczyć punkty wejścia. Po czym tworzymy proces i wywołujemy funkcję w procesie za pomocą „procesu” i przekazujemy „cel = func”. Następnie przekazujemy „FUNC”, „Arg”, przekazujemy wartość „M” i przekazujemy zakres „10”, co oznacza, że ​​pętla kończy funkcję po „10” iteracjach. Następnie rozpoczynamy proces przy użyciu metody „start ()” z „procesem”. Następnie nazywamy metodą „dołącz ()”, aby czekać na wykonanie procesu i ukończyć cały proces.


Dlatego podczas wykonywania kodu funkcje wywołują główny proces i rozpoczynają wykonanie. Są to jednak, dopóki wszystkie zadania nie zostaną wykonane. Widzimy to, ponieważ każde zadanie jest przeprowadzane jednocześnie. Zgłasza swoją wiadomość, gdy tylko się skończy. Oznacza to, że chociaż wiadomości są niepotrzebne, pętla kończy się po zakończeniu „10” iteracji.

Wniosek

W tym artykule omówiliśmy multiprocessing Python dla pętli. Przedstawiliśmy również dwie ilustracje. Pierwsza ilustracja pokazuje, jak wykorzystać bibliotekę wieloprocesową w pętli Pythona. A druga ilustracja pokazuje, jak zmienić sekwencyjny dla pętli w równoległe wieloprocesowe dla pętli. Przed skonstruowaniem skryptu do wieloprocesowego Pythona musimy zaimportować moduł wieloprocesowy.