채워가는 지식/Python
비동기 프로그래밍 - python
daco
2023. 4. 12. 16:10
[파이썬] asyncio로 비동기 처리하기
Engineering Blog by Dale Seo
www.daleseo.com
비동기 프로그래밍의 필요성
코드에 시간이 오래 걸리는 a task과 시간이 짧게 걸리는 b, c task이 있다고 가정합시다.
동기 프로그래밍은 코드를 순차적으로 처리하게 됩니다.
그렇게 되면 a task이 끝날 때까지 b, c task을 하지 못하고 그로 인해 짧게 걸리는 task인 b, c task의 결과도 그만큼 오래 기다려야할 것입니다.
하지만 비동기 프로그래밍은 코드를 동시처리를 합니다.
그렇게 되면 b, c task은 a task에 상관없이 결과를 바로 받을 수 있고, a task은 a task대로 처리하기 때문에 효율적이게 됩니다.
그렇게 때문에 여러 효율적으로 task를 처리하기 위해서는 비동기프로그래밍이 필요합니다.
python asyncio
python의 asyncio 라이브러리를 사용하면 비동기 프로그래밍을 할 수 있습니다.
def앞에 aysnc를 붙여주면 그 함수는 비동기 함수가 되고, 이를 python에서는 코루틴(coroutine)이라고 합니다.
aysnc def do_async():
pass
이 비동기 함수를 다른 비동기 함수에 호출을 하려면 await를 붙여서 호출해야 합니다.
aysnc def main_async():
await do_async()
asyncio.run(main_async())으로 비동기 함수를 실행시킬 수 있습니다.
asyncio.run(main_async())
※참고 블로그에 print문을 이용한 간단한 예시가 있습니다.
단, ipython에서 실행 시키려면
asyncio.run(await main_async())
위처럼 실행시킬 비동기 함수 앞에 await를 붙여줘야 합니다.