no image
[Python] 파이썬으로 멀티 스레드 만들기
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 출..
2023.06.29
no image
[Python] 파이썬으로 멀티 프로세스 만들기
2023.06.27 - [컴퓨터 구조 & 운영체제] - [운영체제] 스레드(Thread), 멀티 프로세스와 멀티 스레드 [운영체제] 스레드(Thread), 멀티 프로세스와 멀티 스레드 이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. 스레드 이 글에서 다루는 내용은 소프트웨어적 스레드이 rebugs.tistory.com 위 글을 바탕으로 파이썬으로 멀티 프로세스를 구현 프로세스 PID 얻기 import os print('hello os') print('my pid is', os.getpid()) #프로세스의 PID를 얻어옴 위 코드는 프로세스의 PID를 얻어오는 코드이다. PID는 22468이라고 알려준다. 자식 프로세..
2023.06.28

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

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

 

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

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

rebugs.tistory.com

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


프로세스 PID 얻기

import os
print('hello os')
print('my pid is', os.getpid()) #프로세스의 PID를 얻어옴

위 코드는 프로세스의 PID를 얻어오는 코드이다.

PID는 22468이라고 알려준다.


자식 프로세스 생성하고 PID값 얻어오기

from multiprocessing import Process
import os
def foo():
    print('child process', os.getpid()) #자식 PID 출력
    print('my parent is', os.getppid()) #부모 PID 출력
   
if __name__ == '__main__':
    print('parent process', os.getpid()) #부모 PID 출력
    child = Process(target=foo).start()

위 코드는 부모 프로세스가 자식 프로세스를 생성하고, 자식 프로세스는 foo() 함수를 호출하여 자신의 PID와 부모의 PID(PPID)를 출력한다.

부모가 자식을 생성했으므로, 부모의 getpid() 리턴값과, 자식의 getppid() 리턴값은 같다.

부모 프로세스의 PID는 10940이고, 자식 프로세스의 PID는 16492라고 출력된다.


자식 프로세스 여러 개 생성하기

자식 프로세스는 여러 개 만들 수 있다.

from multiprocessing import Process
import os
def foo():
    print('child process', os.getpid()) #자식 PID 출력
   
if __name__ == '__main__':
    child1 = Process(target=foo).start() #자식1 생성
    child2 = Process(target=foo).start() #자식2 생성
    child3 = Process(target=foo).start() #자식3 생성


각기 다른 작업하는 자식 프로세스 생성하기

자식 프로세스는 각기 다른 작업을 수행할 수도 있다.

from multiprocessing import Process
import os
def foo():
    print('This is foo')
    print('process id', os.getpid()) #PID 출력
    
def bar():
    print('This is bar')
    print('process id', os.getpid()) #PID 출력

def baz():
    print('This is baz')
    print('process id', os.getpid()) #PID 출력
   
if __name__ == '__main__':
    child1 = Process(target=foo).start()
    child2 = Process(target=bar).start()
    child3 = Process(target=baz).start()

자식 1은 foo(), 자식 2는 bar(),  자식 3은 baz()함수를 호출한다.

각 함수는 PID를 출력한다.

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

[Python] 파이썬으로 멀티 스레드 만들기  (0) 2023.06.29