Нишки в Python: Научете как да работите с нишки в Python



Тази статия за Threading в Python ще ви разкаже какво представляват нишките, техните типове, как да ги стартирате и използвате по най-добрия възможен начин

Днес, е един от най-обичаните езици за програмиране в света. От създаването си през 90-те години на миналия век той събра огромно количество последователи и ентусиасти и програмисти, които работят ежедневно, за да подобрят този език за програмиране. Сред многото функции, които се вграждат в екосистемата на Python, една, която се откроява най-много, е Threading. Затова в тази статия ще говорим всичко за Threading в Python, как можете да се възползвате от него заедно с неговите предимства и недостатъци.

Следните указания ще бъдат обхванати в тази статия,





Нека започнем

Нишки в Python

Какво представлява нишката в Python?

Нишка в Python може просто да бъде дефинирана като отделен поток на изпълнение. Това просто означава, че във вашата програма два различни процеса ще бъдат изпълнени едновременно. Един интересен аспект на нишките в Python е фактът, че след версия 3 множество нишки в Python не се изпълняват едновременно, а просто изглеждат.



Въпреки че е невероятно усещане да се изпълняват два различни процеса едновременно, трябва да се разбере, че текущата версия на Python 3 и по-нова е кодирана по такъв начин, че само процес може да се изпълнява във всеки даден момент от времето. Ако обаче имате нужда от два или повече процеса едновременно в CPython, трябва да кодирате част от кода си и на други езици, като C, C ++ и Java, и след това да ги стартирате чрез многопоточност в Python.

Едно от най-известните предимства на нишките в Python е способността му да осигури печалба в яснотата на дизайна.

Преди това имаме някаква идея за Threading в Python, нека разберем как да започнем нишка,



Стартиране на нишка в Python

Сега, когато сте свикнали с дефиницията на нишка в Python, нека разгледаме един пример за това как можете да създадете своя собствена нишка в Python. За да създадете нишка в Python, първо трябва да импортирате библиотеката с нишки и след това да я инструктирате да стартира (), както е показано в примера по-долу:

импортиране регистрация импорт резба време импортиране def thread_function (име): logging.info ('Нишка% s: стартиране', име) time.sleep (2) logging.info ('Нишка% s: завършване', име) ако __name__ == '__main__': format = '% (asctime) s:% (message) s' logging.basicConfig (format = format, level = logging.INFO, datefmt = '% H:% M:% S') logging.info ( „Основна & ampampampnbsp & ampampampnbsp: преди създаване на нишка“) x = резба. Нишка (target = thread_function, args = (1,)) logging.info („Main & ampampampnbsp & ampampampnbsp: преди стартиране на нишка“) x.start () logging.info („Основна & ampampampnbsp & ampampampnbsp: изчакайте нишката да завърши ') # x.join () logging.info (' Основна & ampampampnbsp & ampampampnbsp: всичко готово ')

Изход

Изход - резба в Python - Edureka

Когато изпълнявате нишка в Python, я предавате като функция, която съдържа списък с аргументи, които трябва да изпълни. В примера, споделен по-горе, вие инструктирате Python да стартира нишката, thread_function () и да я предаде на 1 като аргумент.

Когато стартирате горната програма, изходът ще изглежда нещо подобно.

Следващата част от тази статия за „Threading in Python“ нека видим какви са демоновите нишки,

Какво представляват Daemon Threads?

В техническа терминология демонът може да бъде дефиниран като процес, който основно работи във фонов режим. В Python обаче демонова нишка има много специфично значение. В Python демонова нишка ще се изключи в момента, в който програмата е излязла, въпреки че в други програмни езици тя ще продължи да работи във фонов режим. Ако в определена програма нишка не е програмирана като демонова нишка, тогава интерпретаторът ще изчака тя да завърши своята работа и след това само ще изключи интерпретатора.

За да разберете по-добре тази концепция, разгледайте горния пример. Във втория последен ред програмата изчаква няколко секунди, след като приключи всичките си задачи. Това е така, защото изчаква недемоничната нишка да завърши своята работа и след това да излезе от интерфейса. След като нишката завърши своята работа, тогава програмата излиза само.

Сега нека модифицираме горната програма и да видим какво ще стане, ако вмъкнем демонова нишка в кода.

Нов код: x = резба. Thread (target = thread_function, args = (1,), daemon = True)

Когато стартирате горната програма с направените модификации, тя ще изглежда нещо подобно.

Разликата между тези два изхода е, че крайният ред липсва в последния. Thread_function () не получи шанс да завърши, защото вмъкнахме демонова нишка и след като скоро стигна до края, излезе от програмата.

Присъединяване към нишка

След като научихте за концепцията за създаване на нишка в Python, заедно с концепцията за демонична нишка, нека открием как можете да се присъедините към нишки в Python.

С помощта на функцията join () в Python можете да се присъедините към две различни нишки, а също така да инструктирате едната да изчака другата, докато приключи изпълнението си. Тази функция често ще ви бъде полезна, когато кодирате големи приложения и имате нужда всички процеси да бъдат изпълнени в определен ред

Последният бит на тази статия за „Threading in Python“ ще ви покаже работещите множество нишки,

Работа с множество нишки

В горните примери говорихме за това как можете да работите с две нишки наведнъж. Но какво, ако в определена ситуация трябва да работите с няколко нишки едновременно. За по-добро разбиране на ситуацията разгледайте примера по-долу.

импортиране регистрация импорт резба време импортиране def thread_function (име): logging.info ('Нишка% s: стартиране', име) time.sleep (2) logging.info ('Нишка% s: завършване', име) ако __name__ == '__main__': format = '% (asctime) s:% (message) s' logging.basicConfig (format = format, level = logging.INFO, datefmt = '% H:% M:% S') thread = list ( ) за индекс в обхват (3): logging.info („Основна & ampampampnbsp & ampampampnbsp: създаване и стартиране на нишка% d.“, индекс) x = резба. Thread (target = thread_function, args = (index,)) thread.append (x ) x.start () за индекс, нишка в преброяване (нишки): logging.info ('Main & ampampampnbsp & ampampampnbsp: преди да се присъедини към нишка% d.', index) thread.join () logging.info ('Main & ampampampnbsp & ampampampnbsp: thread% d готово ', индекс)

Изход

намери най-големия брой в java -

В горната програма следвахме същата процедура за импортиране на библиотеката с нишки, стартиране на нишката, създаване на множество нишки и след това използваме функцията join (), за да комбинираме всички заедно и да се изпълним в определен ред.

Когато стартирате горната програма, резултатът ще изглежда нещо подобно.

Заключение

Това е една от най-удобните функции на Python. Използвайки го по правилния начин, можете да направите целия си процес на кодиране много по-лесен и ефективен. От горната статия се надяваме, че сте научили основите на нишките и ще продължите да я използвате в ежедневното си програмиране.

Така че това е момчета, надявам се тази статия да ви е харесала.

За да получите задълбочени познания за Python заедно с различните му приложения, можете за онлайн обучение на живо с 24/7 поддръжка и доживотен достъп.

Имате въпрос към нас? Споменете ги в раздела за коментари на тази статия и ние ще се свържем с вас.