AsyncIO 병렬동작

Byounghee Chae·2025년 8월 6일
0

tips

목록 보기
7/7

Async 를 많이 써보지는 않아 확인 하고 자 했던 부분이었고, TIP 으로 남긴다.
추후에 필요시 참고 하기 위함.

Subejct

새로운 task 를 하나 실행해 task 가 실행되는 동안 main 도 별도로 진행되고 있으며,
task 가 실행 완료 될때까지 특정 시점에 main 은 기다리는 Point 가 있어,
완료 되면 task 가 리턴한 값을 main 에서 가져올 수 있도록 하는 Logic.
(먼가 말이 복잡하니 코드로 보아요 😅)

Code

import asyncio

async def main():
    a = 1
    task = asyncio.create_task(whatthe(a))  # 🔄 백그라운드로 실행 시작
    for i in range(10):
        print(f"main: {a}")
        await asyncio.sleep(0.5)
        a += 1
    b = await task  # ✅ 여기서 진짜 결과 기다림
    print(f"b: {b}")

async def whatthe(a):
    for i in range(10):
        print(f"\t\twhatthe: {a}")
        await asyncio.sleep(1.5)
        a = a * 2
    return a

asyncio.run(main())

Logs

main: 1
		whatthe: 1
main: 2
main: 3
		whatthe: 2
main: 4
main: 5
main: 6
		whatthe: 4
main: 7
main: 8
main: 9
		whatthe: 8
main: 10
		whatthe: 16
		whatthe: 32
		whatthe: 64
		whatthe: 128
		whatthe: 256
		whatthe: 512
b: 1024
profile
Python Dev with Infra

0개의 댓글