Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬에서 새 스레드 시작하는 방법


파이썬에서 새로운 스레드를 생성하려면 thread 모듈에서 제공하는 다음 메서드를 호출해야 합니다.

thread.start_new_thread ( function, args[, kwargs] )

이 메서드는 Linux와 Windows 환경 모두에서 빠르고 효율적으로 새 스레드를 생성할 수 있는 방법을 제공합니다.

이 메서드는 호출 즉시 반환되며, 그와 동시에 자식 스레드가 시작되어 전달받은 인수 목록(args)과 함께 지정한 함수를 호출합니다. 함수의 실행이 끝나 반환되면 해당 스레드도 함께 종료됩니다.

여기서 args는 함수에 전달할 인수들의 튜플(tuple)입니다. 인수 없이 함수를 호출하려면 빈 튜플을 사용하면 되고, kwargs는 키워드 인수(keyword arguments)로 구성된 선택적 딕셔너리입니다.

예제

#!/usr/bin/python
import thread
import time

# 스레드에서 실행할 함수 정의
def print_time( threadName, delay):
    count = 0
    while count < 5:
        time.sleep(delay)
        count += 1
        print "%s: %s" % ( threadName, time.ctime(time.time()) )

# 두 개의 스레드 생성
try:
    thread.start_new_thread( print_time, ("Thread-1", 2, ) )
    thread.start_new_thread( print_time, ("Thread-2", 4, ) )
except:
    print "Error: unable to start thread"
while 1:
    pass

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Thread-1: Thu Jan 22 15:42:17 2009
Thread-1: Thu Jan 22 15:42:19 2009
Thread-2: Thu Jan 22 15:42:19 2009
Thread-1: Thu Jan 22 15:42:21 2009
Thread-2: Thu Jan 22 15:42:23 2009
Thread-1: Thu Jan 22 15:42:23 2009
Thread-1: Thu Jan 22 15:42:25 2009
Thread-2: Thu Jan 22 15:42:27 2009
Thread-2: Thu Jan 22 15:42:31 2009
Thread-2: Thu Jan 22 15:42:35 2009

thread 모듈은 저수준(low-level) 스레딩 작업에는 매우 효과적이지만, 보다 최신의 threading 모듈에 비해 제공하는 기능이 크게 제한적입니다.
참고로 파이썬 3에서는 기존의 thread 모듈이 _thread라는 이름으로 변경되었으며, 실무에서는 락(Lock), 데몬 스레드 등 다양한 고수준 기능을 제공하는 threading 모듈을 사용하는 것이 권장됩니다.