KJH
비동기 ??? asyncio ??? 본문
python에서 코드가 흘러가는데에는 두가지 종류가 있음
동기
코드를 작성한 그대로 흘러가게 하는 방식임
import time
# Subroutine (Synchronous Function)
def exam_sync(name, s_time):
print(f"{name} Start")
time.sleep(s_time)
print(f"{name} Finish")
def main():
exam_sync("A", 3)
exam_sync("B", 2)
exam_sync("C", 1)
if __name__ == "__main__":
start = time.time()
print(main())
end = time.time()
print(end - start)
### log
# A Start
# A Finish
# B Start
# B Finish
# C Start
# C Finish
# None
# 6.022242546081543
비동기
코드를 병렬로 돌리는 방식임
라면 물을 끓이면서, 렌지에 햇반도 돌리고, 파도 썰 수 있는 좋은 방식이라고 할 수 있음
import time
import asyncio
# Coroutine (Asynchronous Function)
async def exam_sync(name, s_time):
print(f"{name} Start")
await asyncio.sleep(s_time)
print(f"{name} Finish")
async def main():
result = await asyncio.gather(
exam_sync("A", 3),
exam_sync("B", 2),
exam_sync("C", 1),
)
if __name__ == "__main__":
start = time.time()
asyncio.run(main())
end = time.time()
print(end - start)
### log
# A Start
# B Start
# C Start
# C Finish
# B Finish
# A Finish
# 3.0125226974487305
'Python' 카테고리의 다른 글
Slack API (fastapi - slack_bolt) (0) | 2024.07.19 |
---|---|
azure openAI (GPT4.0, ada-002) (0) | 2023.11.26 |
Slack API (Legacy) (0) | 2023.10.20 |
google spread sheet API (0) | 2021.03.30 |
Youtube Playlist Auto Download (0) | 2021.01.01 |