Async 를 많이 써보지는 않아 확인 하고 자 했던 부분이었고, TIP 으로 남긴다.
추후에 필요시 참고 하기 위함.
새로운 task 를 하나 실행해 task 가 실행되는 동안 main 도 별도로 진행되고 있으며,
task 가 실행 완료 될때까지 특정 시점에 main 은 기다리는 Point 가 있어,
완료 되면 task 가 리턴한 값을 main 에서 가져올 수 있도록 하는 Logic.
(먼가 말이 복잡하니 코드로 보아요 😅)
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())
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