AIFFEL FD #21 멀티태스킹, 멀티프로세스, 멀티스레드

이재준·2021년 9월 4일
0

AIFFEL Fundamental

목록 보기
23/25

✅ 핵심내용

  • 멀티태스킹
  • 멀티프로세스
  • 멀티스레드


멀티태스킹

빅데이터를 다루기 위해서는 컴퓨팅 자원을 최적화 하는 방법, 즉 병렬 컴퓨팅, 분산 컴퓨팅 등의 개념을 알아야한다.

  • 동시성(Concurrency) : 하나의 processor가 여러 가지 task를 동시에 수행하는 개념
  • 병렬성(Parallelism) : 유사한 task를 여러 processor가 동시에 수행하는 개념
  • 동시성과 병렬성을 동시에 적용하면 여러 개의 프로세스가 1개의 task를 여러 개의 subtask로 쪼개어 동시에 병렬적으로 수행하여 효율을 극대화
  • 동기(Synchronous) : 어떤 일이 순차적으로 실행됨, 요청과 요청에 대한 응답이 동시에 실행됨 (따라서 요청에 지연이 발생하더라도 계속 대기)

  • 비동기(Asynchronous) : 어떤 일이 비순차적으로 실행됨, 요청과 요청에 대한 응답이 동시에 실행되지 않음. 특정 코드의 연산이 끝날 때까지 코드의 실행을 멈추지 않고 다음 코드를 먼저 실행하며, 중간에 실행되는 코드는 주로 콜백함수로 연결하기도 함


프로세스, 스레드, 프로파일링

  • 프로세스(Process)

    • 프로그램을 구동하여 프로그램 자체와 프로그램의 상태가 메모리상에서 실행되는 작업 단위
    • 하나의 프로그램을 실행할 때, 운영체제는 한 프로세스를 생성한다.
    • 파이썬에서는 os 라는 모듈에서 프로세스 관련 정보를 얻을 수 있다.
  • 스레드(Thread)

    • 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위
  • 프로파일링

    • 코드에서 시스템의 어느 부분이 느린지 혹은 어디서 RAM을 많이 사용하고 있는지를 확인하고 싶을 때 사용하는 기법
    • 애플리케이션에서 가장 자원이 집중되는 지점을 정밀하게 찾아내는 기법
    • 코드의 병목(bottleneck)을 찾아내고 성능을 측정해 주는 도구
    • profile 모듈, cProfile 모듈과 line_profiler 패키지를 이용하면 높은 수준의 프로파일링이 가능함

Scale Up, Scale Out

  • 스케일 업 (Scale Up)
    • 한 대의 컴퓨터의 성능을 최적화시키는 방법
    • 단일 서버(하드웨어)의 성능을 증가시켜서 더 많은 요청을 처리하는 방법
    • 단일 하드웨어의 성능을 높이기 위해 CPU, 메모리, 하드디스크 등을 업그레이드하거나 추가하는 것을 의미
  • 스케일 아웃 (Scale Out)
    • 여러 대의 컴퓨터를 한 대처럼 사용하는 것
    • 동일한 사양의 새로운 서버를 추가하여 성능을 증가시키는 방법
    • 서버가 증설됨에 따라 여러 대의 서버가 트래픽을 나누어 갖게 되고, 각각의 서버가 이를 처리

멀티스레드, 멀티프로세싱을 파이썬에서 구현한 예시 과정을 아래의 GitHub 에 정리하였다.

GitHub Link : Multi-tasking

profile
🏫 𝑲𝒚𝒖𝒏𝒈 𝑯𝒆𝒆 𝑼𝒏𝒊𝒗. / 👨‍🎓 𝑪𝒐𝒍𝒍𝒆𝒈𝒆 𝒐𝒇 𝑬𝒏𝒈𝒊𝒏𝒆𝒆𝒓𝒊𝒏𝒈

0개의 댓글