본문 바로가기
Programming/Python

[Python] Thread

by goatlab 2022. 1. 25.
728x90
반응형
SMALL

Thread

 

thread는 프로그램이 실행되는 실행 흐름의 초소 단위이다. os에서 exe 파일을 실행하면 기본적으로 해당 프로그램을 위한 프로세스가 생성된다. 그리고 다시 이 프로세스는 하나의 thread를 만들고 이 thread를 따라 코드가 실행된다. thread는 프로세스에 종속되므로 프로세스 내에서 thread가 추가로 만들때 새로운 thread는 프로세스 코드와 메모리를 공유한다.

 

CPU 사용률 향상
효율적인 자원 활용 및 응답성 향상
코드 간결 및 유지보수성 향상

 

https://www.geeksforgeeks.org/multithreading-python-set-1/

 

import threading as th

Thread(name=, target=, args=, kargs=, *, daemon=)
  • name : thread의 이름. 로깅들을 위한 용도로 쓰며 주지 않아도 무방
  • target : thread에서 실행할 함수
  • args : target에 넘겨질 인자 (tuple type)
  • largs : target에 키워드 인자 (dictionary type)
  • daemon : 데몬 실행 여부, 데몬으로 실행되는 thread는 프로세스가 종료될 때 즉각 중단된다.

 

thread 객체를 생성하더라도 바로 실행되지 않고 start()를 호출하면서 시작된다.

 

  • start() : 스레드 시작
  • join() : 해당 스레드에서 실행되는 함수가 종료될때까지 기다린다.
              timeout= 인자를 주어 특정 시간까지만 기다리게 할 수 있다.
              타임아웃을 초과해도 예외를 일으키지 않고 None을 리턴하므로 이 경우 is_alive() 호출하여 스레드가 실행
              중인지를 파악할 필요가 있다.
 
  • is_alive() : 해당 thread가 동작 중인지 확인
  • name : thread의 이름
  • ident : thread 식별자. 정수값
  • native_id : thread 고유 식별자 ident는 종료된 thread 이후에 새로 만들어진 다른 thread에 재활용될 수 있다.
  • daemon : 데몬 thread 여부

 

thread를 사용 할 때 주의할 점은 Thread.start()는 작업이 끝나면 즉시 종료되기 때문에 thread가 동작하고 있는 중일 때 메인 thread가 대기하지 않는다면 프로그램이 중간에 끝나버릴 수도 있다. 프로세스의 종료 시점은 메인 thread가 종료 지점에 도달했을 때이며 다른 thread의 실행여부는 고려되지 않는다. 이를 막기위해 join() method가 사용된다.

 

 

728x90
반응형
LIST