Python socket programming #3 - MultiThreading (Threading module)

2. threading


두 번째로 threading 모듈은 thread 클래스를 상속받아 사용하는 모듈입니다.

클래스가 threading.Thread를 상속받아 사용하게 됩니다.

java와 마찬가지로 run 메소드를 오버라이드 하여 각 각 선언된 클래스를 통해

Class_name.start()를 작동시키면 run 메소드가 작동하게 됩니다.

import threading
import time
class myThread (threading.Thread):
def __init__(self, name, delay):
threading.Thread.__init__(self)
self.name = name
self.delay = delay
def run(self):
print "Starting " + self.name
print_count(self.name, self.delay, 5)
print "Exiting " + self.name
def print_count(threadName, delay, counter):
while counter:
time.sleep(delay)
print "%s: %d" % (threadName, counter)
counter -= 1
thread1 = myThread("Thread_1", 1)
thread2 = myThread("Thread_2", 2)
thread1.start()
thread2.start()
print "Exiting Main Thread"
view raw gistfile1.txt hosted with ❤ by GitHub
위의 코드를 보면

class myThread (threading.thread):를 통해 클래스를 선언 한 뒤

생성자를 통해 thread의 name과 delay time을 인자로 받습니다.

이 후 thread1.start()를 통해 run 메소드를 작동시킵니다.

run 메소듣 내부에서는 print_count함수를 호출하여 5회 각 각 1초와 2초의 딜레이를 부여해 내용을 출력합니다.

아래는 출력 내용입니다.

Starting Thread_1
Exiting Main Thread
Starting Thread_2
Thread_1: 5
Thread_2: 5Thread_1: 4

Thread_1: 3
Thread_2: 4
Thread_1: 2
Thread_1: 1
Exiting Thread_1
Thread_2: 3
Thread_2: 2
Thread_2: 1
Exiting Thread_2

Related Posts:

  • Python socket programming #2 - MultiThreading (Thread module)파이썬에서의 멀티 쓰레딩은 두 가지의 모듈을 사용해 만들 수 있습니다. 각각의 모듈은 아래와 같습니다. Thread Threading 먼저 Thread는 C와 같이 함수를 이용해 Thread를 run 시키는 방식으로 MultiThreading을 구현합니다… Read More
  • Python socket programming #4 - multiprocessing #1Python에서 thread는 GIL(Global Interpreter Lock)을 따르게 됩니다. 간단하게 설명하면 보통은 다수의 쓰레드가 작동할 때에 아래와 같은 모델을 상상하게 됩니다. 하지만 GIL에 의해서 python은 한 Thread씩 Lock이 걸리는… Read More
  • Python socket programming #1 - basic server and clientpython의 소켓은 C나 자바에 비해 비교적 단순한 모습을 취하고 있습니다. Socket의 선언은 아래와 같습니다. s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 여기서 각각 PF(프로토콜 체계)와 AF(주소 체… Read More
  • Python socket programming #3 - MultiThreading (Threading module) 2. threading 두 번째로 threading 모듈은 thread 클래스를 상속받아 사용하는 모듈입니다. 클래스가 threading.Thread를 상속받아 사용하게 됩니다. java와 마찬가지로 run 메소드를 오버라이드 하여 각 각 선언된 클래스를 통해 … Read More