Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

KJH

비동기 ??? asyncio ??? 본문

Python

비동기 ??? asyncio ???

모이스쳐라이징 2022. 5. 15. 13:50

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