ThreadPoolexecutor Python

ThreadPoolexecutor Python
ThreadPoolExecutor to klasa Python znaleziona w opakowaniu o nazwie „Współbieżna.futures ”. Powiedzmy, że musieliśmy zrobić wiele wątków do naszych wysoce równoległych miejsc pracy. Jest to najdroższe, ponieważ może wystąpić kilka problemów z wydajnością w wyniku posiadania o wiele więcej procesów. Dużym problemem może być to, że przepustowość staje się ograniczona. Możesz pokonać ten problem, konstruując pulę wątków. Pula wątków to zbiór procesów wstępnie instantycznych lub nieaktywnych, które czekają na przypisanie pracy. Ilekroć musi zostać zakończony znaczący zestaw działań, zwykle zaleca się ustanowienie puli wątków w celu opracowania nowych procesów dla każdego zadania. Pula wątków może wykonywać następujące zadania:
  • Po zakończeniu procesu w puli nici, można go ponownie użyć.
  • Po zakończeniu wątku powstaje nowy wątek, aby zająć.

Równolegle.Pakiet futures to część regularnej biblioteki Python. W Python 3.2, Pakiet ten został utworzony, aby zapewnić programistom podwyższony interfejs do inicjowania równoczesnych procesów. Jest to poziom pośredni zbudowany na nalotie Pythona, a także pakiety wieloprocesowe, które pozwalają wykonywać zadania wykorzystujące pulę wątków lub procedur. W tym artykule przyjrzymy się klasie wykonawcy puli wątków i jej funkcji.

Przykład 01:

Rzućmy okiem na klasę wykonawców puli wątków w naszym kodzie Python. Po pierwsze, użyliśmy „równoczesnego.Pakiet futures ”za pomocą słowa kluczowego„ From ”w pierwszym wierszu, aby zaimportować klasę„ ThreadPoolexecutor ”w kodzie. Następnie zainicjowaliśmy listę 4 liczb. Pierwsza funkcja to funkcja zdefiniowana przez użytkownika o nazwie „kwadrat” i będzie obliczała kwadrat wartości przekazanej w jego argumentach. Drugą metodą jest funkcja konstruktora i.mi., metoda main (), gdy wykonanie zaczyna się od i. Tak więc funkcja zdefiniowana przez użytkownika „kwadrat” jest definiowana za pomocą słowa kluczowego „def” i przyjmuje wartość argumentu do obliczenia jego kwadratu.

Wsporniki „” są używane do przyjmowania wartości numerycznej zmiennej „Z” zamiast przyjmować „Z” jako ciąg tutaj. Znak „F” przed instrukcją tekstu i obliczeń pokazuje, że wartości zostaną przyjmowane jako pływaki, a ich kwadrat zostaną obliczone. Instrukcja drukowania wykorzystuje ten format, aby uzyskać kwadrat i wydrukować go w powładzie wyjściowej Spyder3. Teraz pojawia się konstruktor funkcji main (). Konstruktor inicjuje pustą listę o nazwie „Val”. Czas użyć klasy THEMPOOLEXECUTORPUTER, aby wykonać pulę 5 wątków do użycia asynchronicznie.

W tym celu skorzystaj z instrukcji „z” o nazwie „ThreadPoolexecutor”, biorąc argument „Max_Workers” o wartości 5. Możesz to zobaczyć jako pętlę przyjmującą 1 wartość za każdym razem. Funkcja przesłania klasów ThreadPoolexecutor jest używana do wykonania funkcji i.mi., „Kwadrat” i daje kwadrat podany do niego. Przyjmuje numer 1 jako wartość początkową do metody kwadratowej, a po tym przyjmie wartości z listy „L”. Funkcja „mapy” jest tutaj używana do szybkiego przetłumaczenia funkcji i podlegającej wspólnie.Pakiet futures ”. Wyjątek będzie przechowywany w zmiennej „VAL”, a instrukcja drukowania zostanie użyta do wyświetlania tego wyjątku używanego w pętli „dla” na ekranie wyjściowym.

od współbieżnego.Futures Import TreadPoolexecutor
L = [2,3,4,5]
def Square (z):
print (f'Square of z: z*z ')
Jeśli __name__ == '__main__':
val = []
z ThreadPoolexecutor (Max_Workers = 5) jako EXE:
exe.Prześlij (kwadrat, 1)
val = exe.Mapa (kwadrat, l)
dla res in val:
Drukuj (res)

Utworzono pulę 5 wątków, aby obliczyć kwadrat 5 wartości, zaczynając od 1 do 5, jak pokazano na wyjściu.

Przykład 02:

Oto ostatni przykład użycia klasy, kodu Pythona w kodzie Python. Tak więc rozpoczęliśmy te nowe przykłady z importem klasy za pomocą jej pakietu „równolegle.futures ”. Następnie zainicjuj zmienną „sumę” o wartości 0. Funkcja zdefiniowana przez użytkownika o nazwie „Proces” jest zadeklarowana biorąc w nim argument „N”. Ta funkcja drukuje numery wątków za pomocą instrukcji drukowania. Numer wątku jest podsumowany z liczbą 5 dodaną do zmiennej „suma”. Ta obliczona suma dla każdego wątku zostanie wyświetlona na wyjściu wykorzystującym instrukcję drukowania. Definicja głównej metody została tutaj rozpoczęta. Używa threadPoolExecutor do tworzenia puli 3 wątków. Funkcja „procesu” została wywołana 3 razy przy użyciu funkcji „Prześlij” dla 3 różnych wartości. Po wykonaniu wszystkich wątków metody procesu wyświetli komunikat o zakończeniu. Następnie używana jest deklaracja funkcji Main ().

od współbieżnego.Futures Import TreadPoolexecutor
Sum = 0
Proces def (n):
Drukuj („Przetwarzanie wątku: ”.format (n))
Sum = n + 5
print („suma i 5 to:”.format (n), suma)
def main ():
Drukuj („Start ThreadPoolexecutor”)
z ThreadPoolexecutor (Max_Workers = 3) jako np
val = ex.Prześlij (proces, (2))
val = ex.Prześlij (proces, (4))
val = ex.Prześlij (proces, (5))
druk („Wszystkie wątki są całkowicie przetwarzane”)
Jeśli __name__ == '__main__':
główny()

Wykonanie pokazuje, że pula jest uruchomiona, a każdy numer wątku z jego sumą z numerem 5 jest wyświetlany.

Wniosek:

Omówiliśmy i omówiliśmy klasę ThreadPoolexecutor i wszystkie prawdopodobnie używane funkcje IT w naszych przykładach. Powinniśmy uczynić to tak bezpretensjonalne, jak prawdopodobne dla naszych użytkowników. Przyjrzeliśmy się również funkcji mapy i przesyłania. Oczekujemy najlepszej odpowiedzi.