채워가는 지식/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를 붙여줘야 합니다.