[파이썬] μ‰½κ²Œ μ„€λͺ…ν•œ Process vs Thread

Posted by Euisuk's Dev Log on February 19, 2024

[파이썬] μ‰½κ²Œ μ„€λͺ…ν•œ Process vs Thread

원본 κ²Œμ‹œκΈ€: https://velog.io/@euisuk-chung/파이썬-Process-vs-Thread

ν”„λ‘œμ„ΈμŠ€(Process)λž€?

μ»΄ν“¨ν„°μ—μ„œ ν”„λ‘œκ·Έλž¨μ΄ μ‹€ν–‰λ˜κ³  μžˆμ„ λ•Œ, κ·Έ μ‹€ν–‰ 쀑인 ν”„λ‘œκ·Έλž¨μ„ ν”„λ‘œμ„ΈμŠ€λΌκ³  ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, 인터넷 λΈŒλΌμš°μ €λ₯Ό μ—΄λ©΄ ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€κ°€ μ‹€ν–‰λ˜κ³ , μ›Œλ“œ ν”„λ‘œμ„Έμ„œ(λ¬Έμ„œ μž‘μ„± ν”„λ‘œκ·Έλž¨)λ₯Ό μ—΄λ©΄ 또 λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€κ°€ μ‹€ν–‰λ˜λŠ” 것이죠. 각 ν”„λ‘œμ„ΈμŠ€λŠ” μžμ‹ λ§Œμ˜ λ…λ¦½λœ 곡간을 κ°€μ§€λ©°, λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€μ™€λŠ” λ…λ¦½μ μœΌλ‘œ μš΄μ˜λ©λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄, 고등학ꡐ 각자의 κ΅μ‹€μ—μ„œ κ³΅λΆ€ν•˜κ³  μžˆλŠ” 학생듀을 생각해보죠. μ΄λ•Œ ν•˜λ‚˜μ˜ λ°˜μ„ ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€λΌκ³  λΉ„μœ ν•΄λ³Ό 수 μžˆμ„ 것 κ°™μŠ΅λ‹ˆλ‹€.

좜처: λ‚˜λ¬΄μœ„ν‚€ μ•Όκ°„μžμœ¨ν•™μŠ΅

μŠ€λ ˆλ“œ(Thread)λž€?

μŠ€λ ˆλ“œλŠ” ν”„λ‘œμ„ΈμŠ€ μ•ˆμ—μ„œ 일을 μ²˜λ¦¬ν•˜λŠ” 더 μž‘μ€ λ‹¨μœ„μž…λ‹ˆλ‹€. ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€λŠ” μ—¬λŸ¬ 개의 μŠ€λ ˆλ“œλ₯Ό κ°€μ§ˆ 수 μžˆμ–΄μš”.

μœ„μ˜ μ˜ˆμ‹œμ— μ΄μ–΄μ„œ μ„€λͺ…ν•΄λ³΄μžλ©΄, μ΄λŠ” 마치 ν•œ λ°©μ—μ„œ μ—¬λŸ¬ λͺ…μ˜ 학생이 각자 λ‹€λ₯Έ 과제λ₯Ό ν•˜κ³  μžˆλŠ” 상황과 λΉ„μŠ·ν•©λ‹ˆλ‹€. 같은 반(ν”„λ‘œμ„ΈμŠ€)의 학생듀(μŠ€λ ˆλ“œ)은 μ„œλ‘œμ˜ μžμ›(κ΅κ³Όμ„œ, 체윑볡, μ•„μ΄νŒ¨λ“œ λ“±)을 κ³΅μœ ν•  수 있죠. (*λ‹€λ₯Έ 반 친ꡬ 것을 빌릴 μˆ˜λ„ μžˆκ² μ§€λ§Œ, μ˜ˆμ‹œμ˜ νŽΈμ˜μ„±μ„ μœ„ν•΄ μˆ˜μ—… 쀑이라고 μƒκ°ν•΄λ΄…μ‹œλ‹€.)

좜처: λ‚˜λ¬΄μœ„ν‚€ μ•Όκ°„μžμœ¨ν•™μŠ΅

ν”„λ‘œμ„ΈμŠ€μ™€ μŠ€λ ˆλ“œμ˜ μ°¨μ΄λŠ”?

  • 독립성: ν”„λ‘œμ„ΈμŠ€λŠ” μ™„μ „νžˆ λ…λ¦½μ μœΌλ‘œ μ‹€ν–‰λ˜μ§€λ§Œ, μŠ€λ ˆλ“œλŠ” 같은 ν”„λ‘œμ„ΈμŠ€ λ‚΄μ—μ„œ μ‹€ν–‰λ˜λ―€λ‘œ μ„œλ‘œ 영ν–₯을 쀄 수 μžˆμŠ΅λ‹ˆλ‹€.
  • μžμ› 곡유: ν”„λ‘œμ„ΈμŠ€ κ°„μ—λŠ” μžμ›μ„ κ³΅μœ ν•˜μ§€ μ•Šμ§€λ§Œ, μŠ€λ ˆλ“œλŠ” λ©”λͺ¨λ¦¬ 같은 μžμ›μ„ κ³΅μœ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • 생성 λΉ„μš©: ν”„λ‘œμ„ΈμŠ€λ₯Ό μƒˆλ‘œ λ§Œλ“œλŠ” 것은 λΉ„μš©μ΄ 많이 λ“€μ§€λ§Œ, μŠ€λ ˆλ“œλŠ” μƒλŒ€μ μœΌλ‘œ 적은 λΉ„μš©μœΌλ‘œ λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€.

λ©€ν‹°ν”„λ‘œμ„Έμ‹±(Multiprocessing)κ³Ό λ©€ν‹°μŠ€λ ˆλ”©(Multithreading)μ΄λž€?

  • λ©€ν‹°ν”„λ‘œμ„Έμ‹±μ€ μ—¬λŸ¬ ν”„λ‘œμ„ΈμŠ€λ₯Ό λ™μ‹œμ— μ‹€ν–‰ν•˜λŠ” 것을 λ§ν•©λ‹ˆλ‹€. 각각의 ν”„λ‘œμ„ΈμŠ€κ°€ λ…λ¦½μ μœΌλ‘œ μž‘λ™ν•˜κΈ° λ•Œλ¬Έμ—, ν•˜λ‚˜κ°€ λ¬Έμ œκ°€ 생겨도 λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€μ—λŠ” 영ν–₯을 μ£Όμ§€ μ•Šμ•„μš”. μ΄λŠ” 마치 μ—¬λŸ¬ κ΅μ‹€μ—μ„œ μ—¬λŸ¬ λͺ…μ˜ 학생이 λ™μ‹œμ— κ³΅λΆ€ν•˜κ³  μžˆλŠ” 것과 λΉ„μŠ·ν•©λ‹ˆλ‹€. (aka μ•Όμžμ‹œκ°„μ— λΆˆμΌœμ§„ κ³ 3 ꡐ싀)
  • λ©€ν‹°μŠ€λ ˆλ”©μ€ ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€ λ‚΄μ—μ„œ μ—¬λŸ¬ μŠ€λ ˆλ“œκ°€ λ™μ‹œμ— μž‘μ—…μ„ μ²˜λ¦¬ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. 이 방법은 μžμ›μ„ 효율적으둜 μ‚¬μš©ν•  수 μžˆμ§€λ§Œ, μŠ€λ ˆλ“œλ“€μ΄ μžμ›μ„ κ³΅μœ ν•˜κΈ° λ•Œλ¬Έμ— μ„œλ‘œ 영ν–₯을 쀄 수 μžˆμ–΄ 관리가 ν•„μš”ν•΄μš”. μ΄λŠ” ν•œ κ΅μ‹€μ—μ„œ μ—¬λŸ¬ λͺ…이 μ„œλ‘œ λ‹€λ₯Έ 과제λ₯Ό λ™μ‹œμ— ν•˜λŠ” 것과 λΉ„μŠ·ν•©λ‹ˆλ‹€. (aka κ³ 3 κ΅μ‹€μ—μ„œ 학생듀이 각자의 곡뢀λ₯Ό ν•˜λŠ” 것)

좜처: Tug of War: MultiProcessing Vs MultiThreading (Medium Blog)

μ–Έμ œ μ–΄λ–€ 것을 μ‚¬μš©ν•˜λ‚˜μš”?

  • λ©€ν‹°ν”„λ‘œμ„Έμ‹±μ€ μž‘μ—…μ΄ μ„œλ‘œ 독립적이고, ν•˜λ‚˜μ˜ μž‘μ—…μ΄ λ‹€λ₯Έ μž‘μ—…μ— 영ν–₯을 μ£Όμ§€ μ•ŠλŠ” κ²½μš°μ— μœ μš©ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, λ³΅μž‘ν•œ μˆ˜ν•™ 문제λ₯Ό μ—¬λŸ¬ λŒ€μ˜ 컴퓨터가 λ™μ‹œμ— ν‘ΈλŠ” 상황이 이에 ν•΄λ‹Ήν•΄μš”.
  • λ©€ν‹°μŠ€λ ˆλ”©μ€ μž‘μ—…λ“€μ΄ μžμ›μ„ κ³΅μœ ν•΄μ•Ό ν•˜κ³ , μž‘μ€ μž‘μ—…λ“€μ„ λΉ λ₯΄κ²Œ μ²˜λ¦¬ν•΄μ•Ό ν•  λ•Œ μœ μš©ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, μ›Ή μ„œλ²„κ°€ λ™μ‹œμ— μ—¬λŸ¬ μ‚¬μš©μžμ˜ μš”μ²­μ„ μ²˜λ¦¬ν•΄μ•Ό ν•˜λŠ” κ²½μš°κ°€ 이에 ν•΄λ‹Ήν•©λ‹ˆλ‹€.

μ˜ˆμ‹œλ‘œ μ΄ν•΄ν•˜κΈ°

  • λ©€ν‹°ν”„λ‘œμ„Έμ‹± μ˜ˆμ‹œ: μ—¬λŸ¬λΆ„μ΄ λ™λ£Œλ“€κ³Ό ν•¨κ»˜ λŒ€ν˜• ν”„λ‘œμ νŠΈλ₯Ό μ§„ν–‰ν•œλ‹€κ³  생각해 λ³΄μ„Έμš”. ν”„λ‘œμ νŠΈλ₯Ό 더 빨리 μ™„μ„±ν•˜κΈ° μœ„ν•΄, 각자 λ‹€λ₯Έ 뢀뢄을 λ§‘μ•„μ„œ 각자의 μ§‘μ—μ„œ μž‘μ—…μ„ ν•©λ‹ˆλ‹€. μ΄λ ‡κ²Œ ν•˜λ©΄, 친ꡬ ν•œ λͺ…이 λ¬Έμ œμ— λΆ€λ”ͺν˜€λ„ λ‹€λ₯Έ μΉœκ΅¬λ“€μ˜ μž‘μ—…μ—λŠ” 영ν–₯을 μ£Όμ§€ μ•Šμ£ .
  • λ©€ν‹°μŠ€λ ˆλ”© μ˜ˆμ‹œ: ν•œ νŒ€ ν”„λ‘œμ νŠΈλ₯Ό μ—¬λŸ¬λΆ„μ΄ λ§‘μ•˜λ‹€κ³  생각해 λ³΄μ„Έμš”. ν”„λ‘œμ νŠΈλ₯Ό 빨리 μ™„μ„±ν•˜κΈ° μœ„ν•΄, μ—¬λŸ¬λΆ„μ€ λ¬Έμ„œ μž‘μ„±, κ·Έλž˜ν”½ λ””μžμΈ, 데이터 뢄석 등을 λ™μ‹œμ— μ§„ν–‰ν•©λ‹ˆλ‹€. μ—¬κΈ°μ„œ μ—¬λŸ¬λΆ„μ€ ν•˜λ‚˜μ˜ 컴퓨터(ν”„λ‘œμ„ΈμŠ€)λ₯Ό μ‚¬μš©ν•˜κ³ , 각 μž‘μ—…μ€ λ³„λ„μ˜ ν”„λ‘œκ·Έλž¨(μŠ€λ ˆλ“œ)으둜 μ‹€ν–‰λ˜λŠ” 것과 κ°™μŠ΅λ‹ˆλ‹€. μ΄λ•Œ λͺ¨λ“  μž‘μ—…μ΄ 같은 μžμ›(컴퓨터)을 κ³΅μœ ν•˜κΈ° λ•Œλ¬Έμ—, 잘 μ‘°μ •ν•΄μ„œ μž‘μ—…ν•΄μ•Ό ν•΄μš”.

λ©€ν‹°ν”„λ‘œμ„Έμ‹±κ³Ό λ©€ν‹°μŠ€λ ˆλ”©μ€ 각각의 μž₯단점이 μžˆμ–΄, 상황에 따라 적절히 μ„ νƒν•΄μ„œ μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€.



-->