hello world

python thread

Programming/Python2017. 2. 19. 03:48

Thread는 프로세스 내에서 독립된 실행흐름을 갖는 코드이다.


python에서는 thread를 위한 threading, thread 모듈을 지원하지만, thread 모듈은 일반적으로 사용하지 않는다.


<함수 사용>



threading.Thread()로 인스턴스를 생성하는 것은 thread 객체를 생성하는 것이다.

인수로는 target에 threadㄹ 만들 함수 이름을 키워드 인수로 전달해주어야하며, 함수의 인수를 args에 튜플 형태로 전달한다.

이렇게 만들어진 인스턴스가 thread가 되며, start 메소드를 호출하면 실행된다.


클래스의 인스턴스 객체를 함수처럼 호출하는 방법이 존재하며, __call__ 메소드를 정의해 놓으면 가능하다.

이렇게 __call__ 메소드가 정의된 클래스의 인스턴스 객체를 callable 객체라고 하며, 이는 함수처럼 호출이 가능하다.


<callable 객체 사용>

별도로 args에 인수를 전달하지 않았지만, __call__ 메소드에 전달한 인수가 있다면, 튜플형태로 전달해줘야한다.



Thread 클래스를 상속받아 thread를 생성할 수도 있다.


<Thread 클래스를 상속>




thread의 동기화는 두 가지 관점에서 알아볼 수 있다.

1. thread 간의 실행 순서를 맞춘다는 의미

2. thread들이 공유하는 영역(data)에 동시 접근을 막는 것


동시접근을 막는 이유는 race condition으로부터 생기는 문제가 있기 때문이다. 때문에 lock을 설정하여 critical section을 설정해두는 것이 좋다.



'Programming > Python' 카테고리의 다른 글

python coroutine  (0) 2017.02.13
python decorator  (0) 2017.02.13
python closure  (0) 2017.02.13
python lambda 표현식  (0) 2017.02.13
python 가변 매개변수  (0) 2017.02.13