2023.06.27 - [컴퓨터 구조 & 운영체제] - [운영체제] 스레드(Thread), 멀티 프로세스와 멀티 스레드

 

[운영체제] 스레드(Thread), 멀티 프로세스와 멀티 스레드

이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. 스레드 이 글에서 다루는 내용은 소프트웨어적 스레드이

rebugs.tistory.com

위 글을 바탕으로 파이썬으로 멀티 스레드를 구현


스레드 생성하기

import threading
import os

def foo():
    print('thread id', threading.get_native_id()) #스레드 ID 출력
    print('process id', os.getpid()) #PID 출력

if __name__ == '__main__':
    print('process id', os.getpid()) #PID 출력
    thread = threading.Thread(target=foo).start() #스레드 생성

위 코드는 스레드를 생성하여 스레드 ID와 PID를 출력하는 코드이다.

PID는 6172, 프로세스 ID는 8892가 출력되었다.


멀티 스레드 생성하기

import threading
import os

def foo():
    print('thread id', threading.get_native_id()) #스레드 ID 출력
    print('process id', os.getpid()) #PID 출력

if __name__ == '__main__':
    print('process id', os.getpid()) #PID 출력
    thread1 = threading.Thread(target=foo).start() #스레드 생성
    thread2 = threading.Thread(target=foo).start() #스레드 생성
    thread3 = threading.Thread(target=foo).start() #스레드 생성

위 코드는 스레드를 3개 생성해서 각 스레드는 foo()함수를 호출한다.

동일 프로세스에서 호출한 스레드이므로 출력하는 PID값은 동일하다.

하지만 프로세스 ID는 각 스레드가 다르므로 모두 다르다.

VS Code 출력이 이상해서 코랩으로 대신 실행하였다.


각기 다른 작업을 하는 멀티 스레드 생성하기

import threading
import os

def foo():
    print('This is foo')
    print('thread id', threading.get_native_id()) #프로세스 ID 출력
    
def bar():
    print('This is bar')
    print('thread id', threading.get_native_id()) #프로세스 ID 출력

def baz():
    print('This is baz')
    print('thread id', threading.get_native_id()) #프로세스 ID 출력

if __name__ == '__main__':
    thread1 = threading.Thread(target=foo).start() #스레드 생성
    thread2 = threading.Thread(target=bar).start() #스레드 생성
    thread3 = threading.Thread(target=baz).start() #스레드 생성

위 코드는 스레드1은 foo(), 스레드 2는 bar(), 스레드 3은 baz()함수를 호출한다.

각 함수는 스레드 ID를 호출한다.

VS Code 출력이 이상해서 코랩으로 대신 실행하였다.

 

'Python Category > 기타' 카테고리의 다른 글

[Python] 파이썬으로 멀티 프로세스 만들기  (0) 2023.06.28