spawn VS fork

jk01019·2023년 4월 23일
0

process, thread

목록 보기
11/11

Spawn

  • 윈도우즈 및 리눅스/유닉스에서 사용되는 다른 프로세스 생성 방식 중 하나
  • 새로운 파이썬 인터프리터를 생성하여 자식 프로세스를 생성하는 방법입니다.
  • 이 방식은 운영체제에서 별도의 프로세스를 생성하는 방식이므로, 안전성이 높으며 다양한 운영체제에서 사용됩니다.
  • nlrl2, pytorch 등등에서는 기본적으로 multiprocessing을 spawn방식으로 합니다.
  • 파이썬의 multiprocessing 모듈에서 사용되는 기본 프로세스 생성 방식 중 하나
    • 파이썬 interpreter를 새로 켜고 돌리려는 타겟이 있는 스크립트를 다시 import 후 타겟 함수 실행
  • 병렬 처리를 구현할 때 사용됩니다.
  • spawn은 새로운 프로세스를 만들 때,
  • 부모 프로세스의 메모리와 상태를 복제하지 않고 새로운 프로세스를 만드는 방법입니다.
  • 따라서, spawn 방식은 부모 프로세스와 자식 프로세스 사이에 메모리가 공유되지 않습니다.
  • 대신, 각각의 프로세스는 독립적인 메모리 공간을 가지게 됩니다.

fork

  • fork는 유닉스(Unix) 및 유닉스 기반 운영 체제에서 사용되는 시스템 콜(System call) 중 하나입니다.
  • C, C++, 자바 등의 언어에서 사용됩니다.
  • 부모 프로세스의 상태와 메모리를 복제하여 자식 프로세스를 생성합니다.
    • 상대적으로 빠르게 프로세스를 생성할 수 있습니다.
  • 부모 프로세스와 자식 프로세스는 메모리를 공유합니다.
    • 현재 프로세스의 모든 state (생성한 객체, 열려있는 파일, import된 것들까지) 전부 메모리에서 그대로 복사 후 타겟 함수 실행
  • 병렬 처리를 수행할 때 자주 사용됩니다.
profile
새로운 것이 들어오면 이미 있는 것과 충돌을 시도하라.

0개의 댓글