파이썬에서 Mutithreading이란 무엇이며 어떻게 달성합니까?



파이썬에서 멀티 태스킹이 무엇인지 알아보십시오. 또한 Thread 클래스를 확장하고 확장하지 않고 클래스를 생성하지 않고 스레드를 생성하는 방법을 멀티 스레딩에 설명합니다.

시간은 인생에서 가장 중요한 요소입니다. 그 중요성 때문에 프로그래밍 세계는 시간 소비를 크게 줄여 성능을 향상시키는 데 도움이되는 다양한 트릭과 기술을 제공합니다. 이러한 접근 방식 중 하나는 Python의 멀티 스레딩이며, 이는 아래에서 다루는 가장 중요한 개념 중 하나입니다. .

다음은이 기사에서 다루는 모든 전공에 대한 간략한 요약입니다.





뭐가 멀티 태스킹 파이썬에서?
스레드 란 무엇입니까?
파이썬에서 멀티 스레딩이란 무엇입니까?
파이썬에서 멀티 스레딩을 언제 사용합니까?
파이썬에서 멀티 스레딩을 달성하는 방법은 무엇입니까?
Python에서 스레드를 만드는 방법은 무엇입니까?

Python에서 멀티 스레딩 사용의 장점



우선, 파이썬에서 멀티 스레딩에 대해 배우기 전에 먼저 멀티 태스킹을 이해해 보겠습니다.

파이썬에서 멀티 태스킹이란 무엇입니까?

일반적으로 멀티 태스킹은 여러 작업을 동시에 수행하는 기능입니다. 기술적 인 측면에서 멀티 태스킹이란 운영 체제가 동시에 다른 작업을 수행하는 능력을 의미합니다. 예를 들어 , 당신은 당신의 PC에 무엇인가를 다운로드하고 노래를 듣고 동시에 게임을하는 것 등을합니다. 이러한 모든 작업은 동일한 OS에서 동기화되어 수행됩니다. 이것은 시간을 절약 할뿐만 아니라 생산성을 높이는 데 도움이되는 멀티 태스킹에 불과합니다.

OS에는 두 가지 유형의 멀티 태스킹이 있습니다.



  • 프로세스 기반
  • 스레드 기반

이 기사에서는 다음에 대해 배우게 될 것입니다. 스레드 기반 멀티 태스킹 또는 멀티 스레딩 .

스레드 란 무엇입니까?

python-edureka의 스레드 다중 스레딩스레드는 기본적으로 독립적 인 실행의 흐름. 단일 프로세스는 여러 스레드로 구성 될 수 있습니다. 프로그램의 각 스레드는 특정 작업을 수행합니다. 예를 들어, 게임을 할 때 PC에서 FIFA라고 말하면 게임 전체가 단일 프로세스입니다. , 그러나 그것은 음악을 재생하고, 사용자로부터 입력을 받고, 상대를 동 기적으로 실행하는 등을 담당하는 여러 스레드로 구성됩니다.이 모든 것은 동일한 프로그램에서 이러한 다른 작업을 수행하는 별도의 스레드입니다.

모든 프로세스에는 항상 실행되는 하나의 스레드가 있습니다. 이것이 메인 스레드입니다. 이 주 스레드는 실제로 자식 스레드 개체를 만듭니다. 자식 스레드도 기본 스레드에 의해 시작됩니다. 이 기사에서는 현재 실행중인 스레드를 확인하는 방법에 대해 자세히 설명합니다.

그래서 이것으로 스레드가 무엇인지 명확하게 이해하기를 바랍니다. 계속해서 Python에서 멀티 스레딩이 무엇인지 살펴 보겠습니다.

Python에서 멀티 스레딩을 언제 사용합니까?

멀티 스레딩은 시간을 절약하고 성능을 향상시키는 데 매우 유용하지만 모든 곳에 적용 할 수는 없습니다.
이전 FIFA 예제에서 음악 스레드는 입력을받는 스레드와 독립적이고 입력을받는 스레드는 상대를 실행하는 스레드와 독립적입니다. 이러한 스레드는 상호 의존적이지 않기 때문에 독립적으로 실행됩니다.

Windows 8에 PHP 설치

따라서 멀티 스레딩은 개별 스레드 간의 종속성이없는 경우에만 사용할 수 있습니다.

이 기사에서는 Python에서 멀티 스레딩을 달성하는 방법을 자세히 보여줍니다.

파이썬에서 멀티 스레딩을 달성하는 방법은 무엇입니까?

Python의 멀티 스레딩은 스레딩 기준 치수.

이 모듈을 가져 오기 전에이 모듈을 설치해야합니다. 이를 아나콘다 환경에 설치하려면 anaconda 프롬프트에서 다음 명령을 실행하십시오.

conda 설치 -c conda-forge tbb

C ++ 정렬 방법

성공적으로 설치된 후 다음 명령 중 하나를 사용하여 threading 모듈을 가져올 수 있습니다.

스레딩 가져 오기에서 스레딩 가져 오기 *

이제 스레딩 모듈이 설치되었으므로 계속해서 Python에서 멀티 스레딩을 수행하겠습니다.

Python에서 스레드를 만드는 방법은 무엇입니까?


Python의 스레드는 세 가지 방법으로 만들 수 있습니다.

  1. 수업을 만들지 않고
  2. Thread 클래스를 확장하여
  3. Thread 클래스를 확장하지 않고

수업을 만들지 않고

Python의 멀티 스레딩은 클래스를 생성하지 않고도 수행 할 수 있습니다. 다음은 동일한 방법을 보여주는 예입니다.

예:

from threading import * print (current_thread (). getName ()) def mt () : print ( 'Child Thread') child = Thread (target = mt) child.start () print ( 'Executing thread name :', current_thread ( ) .getName ())

산출:

MainThread 자식 스레드 실행중인 스레드 이름 : MainThread

위의 출력은 존재하는 첫 번째 스레드가 기본 스레드임을 보여줍니다. 그런 다음이 주 스레드는 함수를 실행하는 자식 스레드를 만들고 최종 인쇄 문이 주 스레드에 의해 다시 실행됩니다.

이제 Thread 클래스를 확장하여 파이썬에서 멀티 스레딩을 수행하는 방법을 살펴 보겠습니다.

Thread 클래스를 확장하여 :

Thread 클래스를 확장하여 자식 클래스를 만들면 자식 클래스는 새 스레드가 일부 작업을 실행하고 있음을 나타냅니다. Thread 클래스를 확장 할 때 자식 클래스는 __init __ () 메서드와 run () 메서드라는 두 가지 메서드 만 재정의 할 수 있습니다. 이 두 가지 방법 외에 다른 방법은 재정의 할 수 없습니다.

다음은 Thread 클래스를 확장하여 스레드를 만드는 방법의 예입니다.

예:

import threading import time class mythread (threading.Thread) : def run (self) : for x in range (7) : print ( 'Hi from child') a = mythread () a.start () a.join () print ( '안녕하세요', current_thread (). getName ())

산출:
안녕하세요
안녕하세요
안녕하세요
안녕하세요
안녕하세요
안녕하세요
안녕하세요
MainThread에서 안녕

위의 예제는 myclass 클래스가 Thread 클래스를 상속하고 하위 클래스, 즉 myclass가 run 메서드를 재정의하고 있음을 보여줍니다. 기본적으로 모든 클래스 함수의 첫 번째 매개 변수는 현재 객체에 대한 포인터 인 self 여야합니다. 출력은 자식 스레드가 run () 메서드를 실행하고 주 스레드가 자식 실행이 완료되기를 기다린다는 것을 보여줍니다. 이는 join () 함수로 인해 주 스레드가 자식이 완료 될 때까지 대기하게합니다.

이 스레드 생성 방법은 표준 방법이기 때문에 가장 선호되는 방법입니다. 그러나 Thread 클래스를 상속하거나 확장하지 않고 스레드를 생성하려는 경우 다음과 같은 방법으로 수행 할 수 있습니다.

Thread 클래스를 확장하지 않고

Thread 클래스를 확장하지 않고 스레드를 만들려면 다음과 같이 할 수 있습니다.
예:

from threading import * class ex : def myfunc (self) : #self required as first parameter in a class func for x in range (7) : print ( 'Child') myobj = ex () thread1 = Thread (target = myobj. myfunc) thread1.start () thread1.join () print ( 'done')

산출:

병합 정렬 소스 코드 C ++

아이
아이
아이
아이
아이
아이
아이
끝난

자식 스레드는 myfunc를 실행 한 후 주 스레드가 마지막 print 문을 실행합니다.

스레딩 사용의 장점

다중 스레딩에는 다음과 같은 많은 장점이 있습니다.

  • 자원 활용도 향상
  • 코드 단순화
  • 다양한 작업의 동시 및 병렬 발생 허용
  • 시간 소모 또는 응답 시간을 줄여 성능을 향상시킵니다.

다음은 파이썬에서 멀티 스레딩을 사용하거나 사용하지 않고 코드를 실행하는 데 걸리는 시간을 확인하는 예제입니다.

 예: 
가져 오기 시간 def sqr (n) : for x in n : time.sleep (1) x % 2 def cube (n) : for x in n : time.sleep (1) x % 3 n = [1,2,3 , 4,5,6,7,8] s = time.time () sqr (n) cube (n) e = time.time () print (es)

산출:

16.042309284210205

위는 스레드를 사용하지 않고 프로그램을 실행하는 데 걸리는 출력 시간입니다. 이제 스레드를 사용하여 동일한 프로그램에 어떤 일이 발생하는지 살펴 보겠습니다.

예:

스레딩에서 스레딩 가져 오기 import * 가져 오기 시간 def sqr (n) : for x in n : time.sleep (1) print ( 'Remainder after dividing by 2', x % 2) def cube (n) : for x in n : time.sleep (1) print ( '3으로 나눈 나머지', x % 3) n = [1,2,3,4,5,6,7,8] start = time.time () t1 = Thread ( target = sqr, args = (n,)) t2 = Thread (target = cube, args = (n,)) t1.start () time.sleep (1) t2.start () t1.join () t2.join () end = time.time () print (종료-시작)
산출: 9.040220737457275

위의 출력은 스레드를 사용할 때 걸리는 시간이 스레드를 사용하지 않고 동일한 프로그램을 실행하는 데 걸리는 시간에 비해 훨씬 적음을 보여줍니다.

Python의 멀티 스레딩과 관련된이 기사에서 다루는 개념이 명확하기를 바랍니다. 이것이 프로그래밍에서 사용되는 가장 중요한 개념 중 하나이기 때문에 가능한 한 많이 연습하십시오.

질문이 있으십니까? 이 'Python의 멀티 스레딩'블로그의 댓글 섹션에 언급 해주십시오. 의지 가능한 한 빨리 회신하십시오.

다양한 응용 프로그램과 함께 Python에 대한 심층적 인 지식을 얻으려면 라이브에 등록 할 수 있습니다. 연중 무휴 지원 및 평생 액세스.