동시성(Concurrency) 프로그래밍
- 동시에 실행되는 것처럼 보이는 것
- Thread 여러 개를 번갈아 가면서 실행
- Multi-threading
import threading
import time
# thread에서 실행할 함수
def work():
print("[sub] start")
keyword = input("[sub] 검색어를 입력하세요 >>>")
print(f"[sub] {keyword}로 검색을 시작합니다.")
print("[sub] end")
# mainthread 실행
print("[main] start")
worker = threading.Thread(target=work)
# daemon을 사용하면 mainthread가 종료될 때 subthread도 같이 종료됨
worker.daemon = True
worker.start()
print("[main] mainthread는 자기 할일을 합니다.")
print("[main] end")
병렬성(Parallelism) 프로그래밍
- 실제로 작업이 동시에 실행되는 것
- 프로세스를 여러 개 만들어서 동시에 실행
- Multi-processing
import multiprocessing as mp
# process에서 실행할 함수
def sub_process(name):
print("[sub] start")
print(name)
cp = mp.current_process()
print(f"[sub] pid : {cp.pid}")
print("[sub] end")
# main process
if __main__ == "__main__": # main module 일 때에만 실행하라는 의미
print("[main] start")
p = mp.Process(target=sub_process, args=('startcoding',) # target: 객체, args: 가변인자(tuple 형태)
p.start()
cp = mp.current_process()
print(f"[main] pid : {cp.pid}")
print("[main] end")
from multiprocessing import Process
import time
class Subprocess(Process):
def __init__(self, name):
Process.__init__(self)
self.name = name
def run(self):
print(f"[sub] {self.name} start")
time.sleep(5)
print(f"[sub] {self.name} end")
if __name__ == "__main__":
print("[main] start")
p = Subprocess(name='startcoding')
p.start()
time.sleep(1)
print(p.is_alive()) # process가 살아있는지 검삭
p.join() # join -> sub process가 끝난 후에 main process가 끝나도록 설정
print("[main] end")
참고
패스트 캠퍼스 강의 (한 번에 끝내는 파이썬 웹 개발 초격자 패키지)
'Python' 카테고리의 다른 글
[Python] csv 파일 쓰기, 읽기 (0) | 2024.01.29 |
---|---|
[Python] pickle 파일 작성 및 읽기 (0) | 2024.01.29 |