Project8_쓰레드를 사용한 프로그램

Song Chae Won·2023년 2월 1일
0
post-thumbnail

쓰레드 ... ?

자바 생각나서 마음이 아픈 쓰레드 .. 내 처참한 자프실 성적이 떠오른다... 아무튼, 쓰레드는 코드를 실행하는 하나의 동작! 우리는 파이썬 코드를 이용하여 하나의 동작을 하는 코드를 만드는데, 프로그램이 커지고 해야할 일이 많아지면 하나의 동작만을 가지고는 부족하여 쓰레드라는 방식을 사용하여 동작을 늘릴 수 있다!

📍 2가지 동작이 동시에 실행되는 코드를 만들고 실행

import threading # threading 모듈 불러오기
import time

def thread_1(): # thread_1의 함수로 1초마다 "쓰레드1 동작"을 출력
    while True:
        print("쓰레드1 동작")
        time.sleep(1.0)

t1 = threading.Thread(target=thread_1) # 쓰레드를 설정
t1.start() # 쓰레드를 시작

while True: # 메인코드로 "메인동작"을 2초마다 출력
    print("메인동작")
    time.sleep(2.0)

출력해보면 메인동작은 2초, 쓰레드1은 1초마다 실행된다.
메인동작은 인터럽트의 발생으로 종료되었지만, 쓰레드1은 독립적으로 동작하도록 설정되어 있기에 무한 실행,, 멈추려면 파이썬 쉘을 종료시켜야한다.

📍 메인코드가 동작할 때에만 쓰레드가 동작하는 코드

import threading
import time

def thread_1():
    while True:
        print("쓰레드1 동작")
        time.sleep(1.0)

t1 = threading.Thread(target=thread_1)
t1.daemon = True # 쓰레드를 데몬쓰레드로 설정하여 메인동작이 실행될 때만 쓰레드를 실행하도록 한다!
t1.start()

while True:
    print("메인동작")
    time.sleep(2.0)

시스템sw및실습 수업때 배웠던 데몬프로세스!
메인동작이 실행될 때만 쓰레딩 되도록 .daemon 설정해준다.

📍 다수의 쓰레드를 동작시키는 코드 만들고 실행

import threading

def sum(name, value): # name과 value를 입력받아 value의 회수만큼 반복하기
    for i in range(0, value):
        print(f"{name} : {i}")

t1 = threading.Thread(target=sum, args=('1번쓰레드', 10))
t2 = threading.Thread(target=sum, args=('2번쓰레드', 10))

t1.start()
t2.start()

print("Main Thread") # 메인쓰레드 실행

메인 thread는 한번 실행되고 종료된다, 나머지는 1번쓰레드와 2번쓰레드 (i: 1~10) 10번 실행된다.

profile
@chhaewxn

0개의 댓글