Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬의 스레딩 모듈

<시간/>

Python 2.4에 포함된 최신 스레딩 모듈은 이전 섹션에서 논의한 스레드 모듈보다 훨씬 강력하고 높은 수준의 스레드 지원을 제공합니다.

threading 모듈은 thread 모듈의 모든 메소드를 노출하고 몇 가지 추가 메소드를 제공합니다 -

  • threading.activeCount() − 활성 스레드 개체의 수를 반환합니다.
  • threading.currentThread() − 호출자의 스레드 컨트롤에 있는 스레드 개체의 수를 반환합니다.
  • threading.enumerate() − 현재 활성화된 모든 스레드 개체의 목록을 반환합니다.

메서드 외에도 스레딩 모듈에는 스레딩을 구현하는 Thread 클래스가 있습니다. Thread 클래스에서 제공하는 메소드는 다음과 같습니다 -

  • 실행() − run() 메서드는 스레드의 진입점입니다.
  • 시작() − start() 메서드는 run 메서드를 호출하여 스레드를 시작합니다.
  • 가입([시간]) − join()은 스레드가 종료될 때까지 기다립니다.
  • isAlive() − isAlive() 메서드는 스레드가 아직 실행 중인지 여부를 확인합니다.
  • getName() − getName() 메서드는 스레드의 이름을 반환합니다.
  • setName() − setName() 메서드는 스레드의 이름을 설정합니다.

스레딩 모듈을 사용하여 스레드 생성

스레딩 모듈을 사용하여 새 스레드를 구현하려면 다음을 수행해야 합니다. -

  • Thread 클래스의 새 하위 클래스를 정의합니다.
  • __init__(self [,args]) 메서드를 재정의하여 추가 인수를 추가합니다.
  • 그런 다음 run(self [,args]) 메서드를 재정의하여 스레드가 시작될 때 수행해야 하는 작업을 구현합니다.

새 Thread 하위 클래스를 만든 후에는 해당 인스턴스를 만든 다음 start()를 호출하여 새 스레드를 시작할 수 있습니다. 그러면 run() 메서드가 호출됩니다.

예시

#!/usr/bin/python
import threading
import time
exitFlag = 0
class myThread (threading.Thread):
   def __init__(self, threadID, name, counter):
      threading.Thread.__init__(self)
      self.threadID = threadID
      self.name = name
      self.counter = counter
   def run(self):
      print "Starting " + self.name
      print_time(self.name, 5, self.counter)
      print "Exiting " + self.name
def print_time(threadName, counter, delay):
   while counter:
      if exitFlag:
         threadName.exit()
      time.sleep(delay)
      print "%s: %s" % (threadName, time.ctime(time.time()))
      counter -= 1
# Create new threads
thread1 = myThread(1, "Thread-1", 1)
thread2 = myThread(2, "Thread-2", 2)
# Start new Threads
thread1.start()
thread2.start()
print "Exiting Main Thread"

위의 코드가 실행되면 다음과 같은 결과가 생성됩니다 -

Starting Thread-1
Starting Thread-2
Exiting Main Thread
Thread-1: Thu Mar 21 09:10:03 2013
Thread-1: Thu Mar 21 09:10:04 2013
Thread-2: Thu Mar 21 09:10:04 2013
Thread-1: Thu Mar 21 09:10:05 2013
Thread-1: Thu Mar 21 09:10:06 2013
Thread-2: Thu Mar 21 09:10:06 2013
Thread-1: Thu Mar 21 09:10:07 2013
Exiting Thread-1
Thread-2: Thu Mar 21 09:10:08 2013
Thread-2: Thu Mar 21 09:10:10 2013
Thread-2: Thu Mar 21 09:10:12 2013
Exiting Thread-2