◆ 멀티스레드(Multi thread) 는 각각의 프로세스가 독립된 메모리를 가지고 동작한다.
◆ Thread의 의미는 실이며, 쓰레드(Thread)는 하나의 프로세스 내에서 여러개의 실들이 각각 움직이게 된다.
◆ 실(Thread)은 내부의 메모리를 공유하면서 각각 움직이므로 프로그램이 가벼워 진다.
■ Thread의 특징
메모리 공유
독립된 register 사용
독립된 stack 사용
■ 파이썬 멀티스레드(Multi thread) 선언
Thread 선언은 threading의 Thread로 한다.
Thread의 시작은 start으로 종료는 join으로 한다.
target은 thread에서 동작시킬 함수 값을 결정하고, args는 입력값을 의미 한다.
--->>> 예제 : Thread.py <<<-----------------------------
import threading
import time
def func0(list_var):
for x in list_var:
print(x)
time.sleep(0.5)
def func1(list_var):
for x in list_var:
print(x)
time.sleep(1)
■ 파이썬 멀티스레드(Multi thread) : 이름, 프로세스 명 확인
current_thread.name 함수를 사용해서 현재 thread의 이름과 os.getpid 함수로 현재 process 명을 확인한다.
멀티 프로세스와 다르게 멀티스레드는 동일한 프로세스를 사용하므로 결과는 다른 thread 이름을 가지면서
동일한 process 명을 가진다.
◆ threading.current_thread(): 현재 스레드 값 확인
◆ os.getpid(): 현재 프로세스값 확인
--->>> 예제 : Multi_thread.py <<<--------------------------------
import threading
import os
def func0():
print("func0 Thread Name : ", threading.current_thread().name)
print("func0 Process ID : ", os.getpid())
def func1():
print("func1 Thread Name : ", threading.current_thread().name)
print("func1 Process ID : ", os.getpid())
if __name__ == "__main__":
print("Main Thread Name : ", threading.current_thread().name)
print("Main Process ID : ", os.getpid())