Днес, е един от най-обичаните езици за програмиране в света. От създаването си през 90-те години на миналия век той събра огромно количество последователи и ентусиасти и програмисти, които работят ежедневно, за да подобрят този език за програмиране. Сред многото функции, които се вграждат в екосистемата на Python, една, която се откроява най-много, е Threading. Затова в тази статия ще говорим всичко за Threading в Python, как можете да се възползвате от него заедно с неговите предимства и недостатъци.
Следните указания ще бъдат обхванати в тази статия,
- Какво представлява нишката в Python?
- Стартиране на нишка в Python
- Какво представляват Daemon Threads?
- Работа с множество нишки
Нишки в 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, я предавате като функция, която съдържа списък с аргументи, които трябва да изпълни. В примера, споделен по-горе, вие инструктирате 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 поддръжка и доживотен достъп.
Имате въпрос към нас? Споменете ги в раздела за коментари на тази статия и ние ще се свържем с вас.