컴퓨팅 자원을 최적화하는 방법, 즉 병렬 컴퓨팅, 분산 컴퓨팅 등의 개념
동시성(Concurrency)
하나의 processor가 여러 가지 task를 동시에 수행하는 개념
병렬성(Parallelism)
유사한 task를 여러 processor가 동시에 수행하는 것
동기(synchronized) 방식
앞 작업이 종료되기를 무조건 기다렸다가 다음 작업을 수행하는 것
비동기(asynchronous) 방식
바운드되고 있는 작업을 기다리는 동안 다른 일을 처리하는 것
프로그램을 구동하여 프로그램 자체와 프로그램의 상태가 메모리상에서 실행되는 작업 단위
스레드(thread)는 어떠한 프로그램 내, 특히 프로세스 내에서 실행되는 흐름의 단위
코드에서 시스템의 어느 부분이 느린지 혹은 어디서 RAM을 많이 사용하고 있는지를 확인하고 싶을 때 사용하는 기법
Scale-Up은 한 대의 컴퓨터의 성능을 최적화시키는 방법이고 Scale-Out은 여러 대의 컴퓨터를 한 대처럼 사용하는 것
파이썬에서 멀티스레드의 구현은 threading 모듈을 이용
함수 이름을 출력하면 함수 객체를 확인할 수 있습니다.
t = Thread(target=함수이름, args=())
파이썬에서 멀티프로세스의 구현은 multiprocessing 모듈을 이용해서 할 수 있습니다.
Process 인스턴스를 만든 뒤, target 과 args 파라미터에 각각 함수 이름과 함수 인자를 전달합니다.
Process 클래스는 start(), join(), terminate() 같은 프로세스 동작 관련 메소드가 있습니다.
p = mp.Process(target=delivery, args=())
p.start() # 프로세스 시작
p.join() # 실제 종료까지 기다림 (필요시에만 사용)
p.terminate() # 프로세스 종료
30-8 봐야함