๐ ๊ณต๋ถํ๋ ์ง์ง์ํ์นด๋ ์ฒ์์ด์ง?
Python์ ๋๊ธฐ์ ๋น๋๊ธฐ๋ ๋ณธ๋ฌธ
Python์ ๋๊ธฐ์ ๋น๋๊ธฐ๋
์ง์ง์ํ์นด 2022. 11. 22. 16:48<๋ณธ ๋ธ๋ก๊ทธ๋ exmemory ๋์ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํด์ ๊ณต๋ถํ๋ฉฐ ์์ฑํ์์ต๋๋ค :-)>
https://exmemory.tistory.com/78
[Python] ๋๊ธฐ, ๋น๋๊ธฐ, ๋ธ๋ญ, ๋๋ธ๋ญ ํ์ด์ฌ์ผ๋ก ์์๋ณด๊ธฐ
๊ฐ๋ฐ์๋ผ๋ฉด ํ ๋ฒ์ฉ ๋ฃ๊ฒ๋๋ ๋๊ธฐ(Synchronous), ๋น๋๊ธฐ(Asynchronous), ๋ธ๋ญ(Block), ๋๋ธ๋ญ(Non-block)์ Python์ฝ๋๋ฅผ ํตํด ์์๋ณด๊ฒ ์ต๋๋ค. ์ฐ์ ๋ฌด์์ ์๋ฏธํ๋์ง ์ ์ํ๊ฒ ์ต๋๋ค. Block : ํธ์ถ๋ ํจ์๊ฐ
exmemory.tistory.com
๋ธ๋ก(Block) : ํธ์ถ๋ ํจ์๊ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๊ธฐ ์ ๊น์ง ์ ์ด๊ถ์ ๋๋ ค์ฃผ์ง ์์
๋ ผ-๋ธ๋ก(Non-Block) : ํธ์ถ๋ ํจ์๊ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๊ธฐ ์ ์ ์ ์ด๊ถ์ ๋ฐํํ์ฌ ํธ์ถํ ํจ์๊ฐ ์ค๊ฐ์ ๋ค๋ฅธ ์ผ์ ํ ์ ์๋๋ก ํจ
๋๊ธฐ(Synchronous) : ํจ์๋ฅผ ๋จ์ผ์ ์ผ๋ก ์ํ (๊ฐ๊ฐ์ ํจ์๋ฅผ ์์ฐจ์ ์ผ๋ก ์ํ)
๋น๋๊ธฐ(Asynchronous) : ํจ์๋ฅผ ๋ณ๋ ฌ์ ์ผ๋ก ์ํ (๊ฐ๊ฐ์ ํจ์๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ์ํ).
๐งธ ๋๊ธฐ Synchronous
์ฑ๊ธ ์ฐ๋ ๋ : ๋ชจ๋ ์ฝ๋์ ์คํ์ด ๋๋์ผ ์ฃผ ์ฐ๋ ๋๊ฐ ์ข ๋ฃ
๋ฉํฐ ์ฐ๋ ๋ : ์ฃผ ์ฐ๋ ๋๊ฐ ๋จผ์ ์ข ๋ฃ๋ ์ ์์ (์คํ ์ค์ธ ์ฐ๋ ๋๊ฐ ํ๋๋ผ๋ ์์ผ๋ฉด ํ๋ก์ธ์ค๋ ์ข ๋ฃ๋์ง ์์)
- Thread ํด๋์ค ์์ฑํด์ ์ฌ์ฉํด๋ณด๊ธฐ
1. ๋ฉํฐ ์ฐ๋ ๋๋ก, ๋ ๋ฆฝ์ ์ธ ์คํํ๋ฆ์ ๊ฐ๊ณ ์คํํ๊ณ ์ถ์ ์ฝ๋๋ฅผ ํจ์ ์ ์ํด์ ๊ตฌํ
2. threading.Thread() ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ target ์ด๋ผ๋ ๋งค๊ฐ๋ณ์์ ๋ฉํฐ ์ฐ๋ ๋๋ก ์คํํ๊ณ ์ถ์ ํจ์๋ช ์ ์ง์
๊ฐ์ฒด ๋ณ์ = threading.Thread(target = "ํจ์๋ช ", args = (a, b ..) )
threading.Thread ํด๋์ค์ ๋งค๊ฐ๋ณ์
target : ์ฐ๋ ๋๋ก ์คํํ ํจ์๋ช ์ ๋ช ์
args : target์์ ๋ช ์ํ ํจ์๊ฐ ๋งค๊ฐ๋ณ์๋ฅผ ํ์๋ก ํ๋ ๊ฒฝ์ฐ ๋งค๊ฐ๋ณ์๋ฅผ ํํ๋ก ๋ง๋ค์ด์ ์์
3. ๊ฐ์ฒด์ start ๋ฉ์๋๋ฅผ ํธ์ถํด์ ์ฐ๋ ๋๋ฅผ start ํจ
๋ฉํฐ ์ฐ๋ ๋๋ฅผ ์คํํ๊ธฐ ์ํด์ start๋ฅผ ํธ์ถํ๋ฉด ์ค์ผ์ฅด๋ฌ๊ฐ ์ ์ ํ ์์ ์ ์ฐ๋ ๋๋ฅผ ๋ง๋ค๊ณ , target ์์ฑ์ ์ง์ ํ ํจ์๋ฅผ ์คํํ๋ค
- Thread ํด๋์ค ์์ฑํด์ ์ฌ์ฉํด๋ณด๊ธฐ
1. threading.Thread ํด๋์ค๋ฅผ ์์ํด์ ํด๋์ค ์ ์
class ํด๋์ค๋ช (threading.Thread)
2. ์์ฑ์์ ์ฒซ ๋ฒ์งธ ๋ฌธ์ฅ์์ Thread ํด๋์ค์ ์์ฑ์๋ฅผ ํธ์ถํด์ผ ํจ
def __init__(self) :
threading.Thread.__init__(self)
3. threading.Thread ํด๋์ค์ run ๋ฉ์๋๋ฅผ ์ฌ์ ์ ํจ
๋ ๋ฆฝ์ ์ผ๋ก ์คํํ๊ณ ์๋ ์ฝ๋๋ฅผ run์ ๊ตฌํ
def run(self) :
# ์ฐ๋ ๋๋ก ์คํํ ์ฝ๋ ์ ์
4. start() ํธ์ถ
start๊ฐ ํธ์ถ๋๋ฉด ์ฐ๋ ๋๋ฅผ ๋ง๋ค์ด์ ์คํํ ์ค๋น๋ฅผ ํ๊ณ ์ ๋นํ ์์ ์ ์ฐ๋ ๋๋ฅผ ์์ฑํด์ ๊ทธ ์ฐ๋ ๋ ๊ฐ์ฒด์ run ๋ฉ์๋ ์คํ
target ์์ฑ์ ์ ์ํ ํจ์ ์คํ
๐งธ ๋น๋๊ธฐ Asynchronous
๐งฉ ์ฝ๋ฃจํด(Coroutine)
ํน์ ์์ ์ ์์ ์ ์คํ๊ณผ ๊ด๋ จ๋ ์ํ๋ฅผ ์ด๋๊ฐ์ ์ ์ฅํ ๋ค ์คํ์ ์ค๋จํ๊ณ , ๋์ค์ ๊ทธ ์ํ๋ฅผ ๋ณต์ํ์ฌ ์คํ์ ์ฌ๊ฐํ ์ ์๋ ์๋ธ ๋ฃจํด
์๋ธ ๋ฃจํด(Subroutine)์ด๋ ์ผ๋ฐ์ ์ผ๋ก ์ฐ๋ฆฌ๊ฐ ์๊ณ ์๋ ํจ์
# Subroutine (Synchronous Function)
def subroutine():
print('subroutine')
# Coroutine (Asynchronous Function)
async def coroutine():
print('coroutine')
'๐ฉโ๐ป ์ปดํจํฐ ๊ตฌ์กฐ > About Computer' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ปดํจํฐ ๊ตฌ์กฐ] ๋ฐ์ดํฐ์ ๋ช ๋ น์ด ๋ฐ ๋ฉ๋ชจ (0) | 2023.03.06 |
---|---|
[MySQL] ๊ฐ๋จํ๊ฒ ๋ฐ์ดํฐ๋ฒ ์ด์ค, ํ ์ด๋ธ ๋ถ๋ฌ์ค๊ธฐ (0) | 2023.02.21 |
javascript์ ๋๊ธฐ์ ๋น๋๊ธฐ๋ (0) | 2022.11.22 |
์์ผ ํต์ (Socket)_TCP & UDP (0) | 2022.08.29 |
[๋ฆฌ๋ ์ค]_6_๋ฆฌ๋ ์ค ๊ธฐ์ด ์ฌ์ฉ๋ฒ (0) | 2022.05.08 |