Python에서 스레딩 : Python에서 스레드로 작업하는 방법 알아보기



이 기사에서는 Threading in Python에 대해 스레드가 무엇인지, 유형, 시작하는 방법 및 가능한 최선의 방법으로 활용하는 방법에 대해 설명합니다.

오늘, 전 세계에서 가장 사랑받는 프로그래밍 언어 중 하나입니다. 1990 년대에 시작된 이래로이 프로그래밍 언어를 더 좋게 만들기 위해 매일 노력하는 엄청난 추종자와 열성적인 애호가 및 코더를 확보했습니다. Python 생태계에 내장 된 많은 기능 중 가장 눈에 띄는 기능은 Threading입니다. 따라서이 기사에서는 Python의 스레딩, 장점 및 단점과 함께 사용하는 방법에 대해 설명합니다.

이 기사에서는 다음 사항을 다룰 것입니다.





시작하겠습니다

Python에서 스레딩

파이썬에서 쓰레드는 무엇입니까?

Python의 스레드는 단순히 별도의 실행 흐름으로 정의 할 수 있습니다. 이것이 단순히 프로그램에서 두 개의 다른 프로세스가 동시에 실행된다는 것을 의미합니다. Python에서 스레딩의 흥미로운 측면 중 하나는 버전 3 이후에 Python의 여러 스레드가 동시에 실행되지 않고 단순히 실행된다는 사실입니다.



동시에 두 개의 서로 다른 프로세스를 실행하는 것은 놀라운 느낌이지만, 현재 버전의 Python 3 이상은 특정 시점에서 프로세스 만 실행할 수있는 방식으로 코딩되어 있음을 이해해야합니다. 그러나 CPython에서 동시에 두 개 이상의 프로세스를 함께 처리해야하는 경우 C, C ++ 및 Java와 같은 다른 언어로 코드 일부를 코딩 한 다음 Python에서 다중 스레딩을 통해 실행해야합니다.

파이썬에서 스레딩의 가장 잘 알려진 장점 중 하나는 디자인 명확성을 제공하는 능력입니다.

자바의 힙 및 스택 메모리

그 전에 파이썬에서 스레딩에 대한 아이디어를 얻었습니다. 스레드를 시작하는 방법을 이해하겠습니다.



Python에서 스레드 시작

이제 Python에서 스레드의 정의에 익숙해 졌으므로 Python에서 고유 한 스레드를 만드는 방법에 대한 예제를 살펴 보겠습니다. Python에서 스레드를 생성하려면 먼저 스레드 라이브러리를 가져온 다음 아래 예제와 같이 start ()하도록 지시해야합니다.

import logging import threading import time def thread_function (name) : logging.info ( 'Thread % s : 시작', name) time.sleep (2) logging.info ( 'Thread % s : finish', name) if __name__ == '__main__': 형식 = '% (asctime) s : % (message) s'logging.basicConfig (format = format, level = logging.INFO, datefmt = '% H : % M : % S') logging.info ( 'Main & ampampampnbsp & ampampampnbsp : 스레드 생성 전') x = threading.Thread (target = thread_function, args = (1,)) logging.info ( 'Main & ampampampnbsp & ampampampnbsp : 스레드 실행 전') x.start () logging.info ( 'Main & ampampampnbsp & ampampampnbsp : 스레드가 완료 될 때까지 기다립니다 ') # x.join () logging.info ('Main & ampampampnbsp & ampampampnbsp : 모두 완료 ')

산출

출력-Python 스레딩-Edureka

Python에서 스레드를 실행할 때 실행해야하는 인수 목록을 포함하는 함수로 전달합니다. 위에서 공유 한 예제에서, 여러분은 스레드 thread_function ()을 실행하고 인자로 1에 전달하도록 파이썬에 지시하고 있습니다.

위의 프로그램을 실행하면 출력은 다음과 같습니다.

'Python의 스레드'에 대한이 기사의 다음 부분에서는 데몬 스레드가 무엇인지 살펴 보겠습니다.

데몬 스레드는 무엇입니까?

기술 용어로 데몬은 주로 백그라운드에서 실행되는 프로세스로 정의 할 수 있습니다. 그러나 Python에서 데몬 스레드는 매우 구체적인 의미를 갖습니다. Python에서 데몬 스레드는 프로그램이 종료되는 순간 종료되지만 다른 프로그래밍 언어에서는 백그라운드에서 계속 실행됩니다. 특정 프로그램에서 스레드가 데몬 스레드로 프로그래밍되지 않은 경우 인터프리터는 작업이 완료 될 때까지 기다린 다음 인터프리터 만 종료합니다.

이 개념을 더 잘 이해하려면 위의 예를 살펴보십시오. 두 번째 마지막 줄에서 프로그램은 모든 작업을 완료 한 후 몇 초 동안 기다립니다. 이는 non-daemonic 스레드가 작업을 마치고 인터페이스를 종료하기를 기다리고 있기 때문입니다. 스레드가 작업을 마치면 프로그램이 종료됩니다.

이제 위의 프로그램을 수정하고 코드에 데몬 스레드를 삽입하면 어떻게되는지 살펴 보겠습니다.

새 코드 : x = threading.Thread (target = thread_function, args = (1,), daemon = True)

hadoop 관리자 대 hadoop 개발자

위의 프로그램을 수정하여 실행하면 다음과 같이 보일 것입니다.

이 두 출력의 차이점은 마지막 행이 최신 행에서 누락되었다는 것입니다. thread_function ()은 완료 할 기회를 얻지 못했습니다. 데몬 스레드를 삽입했고 곧 끝날 때 프로그램을 종료했기 때문입니다.

스레드 결합

데몬 스레드의 개념과 함께 Python에서 스레드를 생성하는 개념에 대해 배웠으므로 이제 Python에서 스레드를 조인하는 방법을 살펴 보겠습니다.

Python에서 join () 함수를 사용하면 두 개의 서로 다른 스레드를 조인 할 수 있으며 실행이 완료 될 때까지 다른 스레드를 기다리도록 지시 할 수도 있습니다. 이 기능은 큰 응용 프로그램을 코딩하고 모든 프로세스를 특정 순서로 실행해야 할 때 유용합니다.

이 기사의 'Threading in Python'에 대한 마지막 부분에서는 작동하는 다중 스레드를 보여줍니다.

다중 스레드 작업

위의 예에서 한 번에 두 개의 스레드로 작업하는 방법에 대해 설명했습니다. 그러나 특정 상황에서 동시에 여러 스레드로 작업해야하는 경우에는 어떨까요? 상황을 더 잘 이해하려면 아래 예를 살펴보십시오.

import logging import threading import time def thread_function (name) : logging.info ( 'Thread % s : 시작', name) time.sleep (2) logging.info ( 'Thread % s : finish', name) if __name__ == '__main__': 형식 = '% (asctime) s : % (message) s'logging.basicConfig (format = format, level = logging.INFO, datefmt = '% H : % M : % S') threads = list ( ) for index in range (3) : logging.info ( 'Main & ampampampnbsp & ampampnbsp : create and start thread % d.', index) x = threading.Thread (target = thread_function, args = (index,)) threads.append (x ) x.start () for index, thread in enumerate (threads) : logging.info ( 'Main & ampampampnbsp & ampampnbsp : before joining thread % d.', index) thread.join () logging.info ( 'Main & ampampampnbsp & ampampampnbsp : thread % d 완료 ', 색인)

산출

위의 프로그램에서 우리는 스레드 라이브러리를 가져오고, 스레드를 시작하고, 여러 스레드를 만든 다음 join () 함수를 사용하여 모두 결합하고 특정 순서로 실행하는 동일한 절차를 따랐습니다.

위의 프로그램을 실행하면 결과는 다음과 같습니다.

결론

파이썬의 가장 편리한 기능 중 하나입니다. 올바른 방법으로 사용하면 전체 코딩 프로세스를 훨씬 더 쉽고 효율적으로 만들 수 있습니다. 위의 기사에서 스레딩의 기본 사항을 배우고 일상적인 프로그래밍에서 계속 사용하기를 바랍니다.

이 기사가 마음에 드 셨으면 좋겠습니다.

다양한 애플리케이션과 함께 Python에 대한 심층적 인 지식을 얻으려면 다음을 수행 할 수 있습니다. 연중 무휴 지원 및 평생 액세스가 가능한 라이브 온라인 교육.

병합 정렬 C ++ 알고리즘

질문이 있으십니까? 이 기사의 댓글 섹션에서 언급하시면 다시 연락 드리겠습니다.