Multitreading Python

Multitreading Python
„W ramach procesu jednostka wykonania jest znana jako wątek. Szybko przesuwając uwagę procesora między wątkami, liczne wątki można uruchamiać jednocześnie w procesie znanym jako multitreading (zwany również przełączaniem kontekstu). Podstawy Multitreading Python zostaną omówione w tym artykule. Aby uzyskać pomoc, dostarczymy również różnorodne przykłady."

Multitreading in Python

Multitreading to technika gwintowania stosowana w programowaniu Pythona do uruchamiania wielu wątków jednocześnie. Ponadto umożliwia udostępnianie przestrzeni danych z głównymi wątkami w procesie, które komunikują się i dzielą informacje łatwiej niż oddzielne procesy. Celem wielowy jest jednoczesne przeprowadzanie wielu procesów, co poprawia renderowanie i wydajność aplikacji.

Jest to bardzo praktyczna metoda przyspieszenia i zwiększania funkcjonalności aplikacji. Korzystając z multiTHreading, programista może rozbić obowiązki aplikacyjne na mniejsze zadania i uruchomić wiele wystąpień programu. Umożliwia wątków komunikowanie się ze sobą i udostępnianie zasobów procesora, w tym pamięci, plików i danych. Ponadto sprawia, że ​​użytkownicy są bardziej skłonni do korzystania z programu, nawet gdy jego sekcja jest zablokowana lub zbyt długa.

Przykład 1

Oto prosty program Python do wielowy. Spójrzmy na program Python, który ma dwie klasy, „Python_demo” i „Python_lesson.”Spójrzmy szczegółowo ten przykładowy kod.

Dwie z naszych klas używają podobnych technik. Wyjście funkcji uruchamiania obiektu pierwszej klasy, gdy jest ono konstruowane i wydrukowane frazę „Python Demo” czterokrotnie. Słowo „Python Lekcja” pojawia się cztery razy, gdy powtarzamy proces dla drugiej klasy.

klasa Python_Demo:
def Run (self):
bo w zakresie (4):
Drukuj („Demo Python”)
klasa Python_lesson:
def Run (self):
bo w zakresie (4):
Drukuj („Python Lekcja”)
First_Obj = python_demo ()
Second_Obj = python_lesson ()
First_Obj.uruchomić()
Second_Obj.uruchomić()

Wynik, jeśli uruchomimy ten program, jest następujący. Python Demo i Python Lekcja są pokazane czterokrotnie z rzędu, jak widać. W rezultacie głównym wątkiem jest to, gdzie działa ten program. Każdy program zawiera główny wątek. W tym przypadku obie operacje są przeprowadzane w sekwencji.

Przykład 2

Jako przykład będziemy zastosować moduł gwintowania Pythona. Możemy zrozumieć konieczność wielowy, jeśli weźmiemy pod uwagę pierwszy scenariusz. To oznacza, że ​​obie procedury muszą być stosowane jednocześnie. Aby to osiągnąć. Spróbujmy coś wymyślić. Teraz, gdy jest obecne wielowy, przykładowy program został zaktualizowany. Dodatkowo każda klasa została uruchomiona jako własny wątek za pomocą klasy wątków.

Zrobiliśmy również różnicę, nie wywołując bezpośrednio metody uruchomienia. Zamiast tego wykorzystujemy metodę Start, która jest zasadniczo mechanizmem implementacji wątków.

Po zastosowaniu metody startowej funkcja uruchamiania jest natychmiast wywoływana w tle. Obecnie domyślnie wykonujemy główny wątek. Dwa wątki dziecięce, pierwsze OBJ i drugi OBJ, powstają, gdy wywoływane są metody rozpoczęcia.

z importu gwintowania *
klasa Python_demo (wątek):
def Run (self):
bo w zakresie (4):
Drukuj („Demo Python”)
klasa Python_lesson (wątek):
def Run (self):
bo w zakresie (4):
Drukuj („Python Lekcja”)
First_Obj = python_demo ()
Second_Obj = python_lesson ()
First_Obj.początek()
Second_Obj.początek()

Te regulacje powodują wyświetlanie danych wyjściowych. Teraz, gdy aplikacja jest uruchomiona, można się zdarzyć wielowy. Widzimy, że kilka słów jest skupione razem, pomimo faktu, że „Python Demo” i „Python Lekcja” są dwoma oddzielnymi zwrotami. Wynikało to z kolizji. Zdarza się to w wyniku dwóch wątków (First_Obj i Second_Obj) próbującego jednocześnie wykonać procesor z powodu nadmiernej prędkości procesora.

Przykład 3

Harmonogramy w systemie operacyjnym określają czas wykonania. W tym przykładzie instrukcje są wykonywane przez oprogramowanie więcej niż raz w określonym czasie.

Możemy temu zapobiec, stosując podejście do snu, aby zapewnić niewielkie opóźnienie dla naszego oprogramowania. Aby to osiągnąć, musimy zaimportować funkcję snu z modułu czasu, aby dodać krótką pauzę między wykonaniem dwóch wątków. Z wyjątkiem dodania funkcji snu, kod jest praktycznie identyczny z przykładami z poprzednich.

Zwróć uwagę na niezbędne moduły, gwintowanie i śpij. Te moduły są importowane najpierw. Funkcja snu jest następnie wykonywana w dwóch klasach, które zostały później konstruowane. Aby wydrukować zdanie, pewna liczba razy w naszym przypadku, trzy WE wykorzystywało pętlę w obu klasach. Aby uruchomić aplikację, po wdrożeniu metody start (. Ostateczne wiersze kodu programu to pokazują.

z importu gwintowania *
Od czasu importuj sen
klasa Python_demo (wątek):
def Run (self):
bo w zakresie (3):
Drukuj („Demo Python”)
sen (1)
klasa Python_lesson (wątek):
def Run (self):
bo w zakresie (3):
Drukuj („Python Lekcja”)
sen (1)
First_Obj = python_demo ()
Second_Obj = python_lesson ()
First_Obj.początek()
spać (0.3)
Second_Obj.początek()

Wynik pokazuje teraz, że wątki działają jednocześnie.

Przykład 4

Moduł gwintowania w Pythonie służy do konstruowania wątków w następującym fragmencie kodu. Główny wątek działa w kodzie, a słowa „to jest główny wątek” są drukowane. Pierwszy wątek i drugi wątek to dwa nowo ustalone i działające wątki. Istnieje przejście kontekstowe, a pierwszy wątek zaczyna działać.

Pierwszy wątek idzie spać po pierwszych czterech iteracjach, podczas gdy drugi wątek zaczyna działać i kończy w samą porę dla następnego przełącznika kontekstowego.

CPU jest teraz pod kontrolą głównego wątku, który ponownie pisze „Główny wątek!"

Drugi wątek wznawia wykonanie po innym przełączniku kontekstowym i zakończy. Główny wątek nie może już wykonywać żadnych instrukcji; Stąd program kończy się.

Importuj wątek jako TD
Czas importować jako t
def print_welcome ():
Dla i w zakresie (5):
Jeśli i == 4:
T.sen (2)
Drukuj („Welcome”)
def print_integers (n):
Dla i w zakresie (n+1):
Drukuj (i)
Drukuj („To jest główny wątek.")
First_thread = td.Wątek (cel = print_welcome, args = ())
second_thread = td.Wątek (Target = print_integers, args = (10,))
First_thread.początek()
second_thread.początek()
Drukuj („Główny wątek ponownie!")

Możesz zobaczyć dane wyjściowe w tej sekcji, w której główny wątek wykonuje się najpierw, a komunikat jest powtarzany w razie potrzeby. Po wykonaniu drugiego wątku, który wyświetlał liczby, oprogramowanie powróciło do pierwszego wątku i przeprowadziło funkcję, która pokazuje słowo „Witaj."

Wniosek

Tematem tego artykułu było Python MultitHreading. Poprzez szybkie przełączanie między wątkami za pomocą procesora, multitTreading to technika gwintowania stosowana w programowaniu Python do uruchamiania wielu wątków jednocześnie. Ponadto umożliwia udostępnianie przestrzeni danych z głównymi wątkami w procesie, które komunikują się i dzielą informacje łatwiej niż oddzielne procesy. Celem wielowy jest jednoczesne wykonywanie wielu procesów.