1. 동기
- 요청 전송 후 응답을 받아야 다음 동작이 이루어지는 방식
- 순차적 실행, 수행 중 작업이 있을 시 다음 작업은 대기
2. 비동기
- 작업 완료 여부와 관계 없이 다음 동작이 이루어지는 방식
- 작업 대기 시간을 줄여 프로그램 효율이 향상
- 파이썬에서 async 키워드를 사용하여 코루틴 생성 가능
# 디스코드 봇 모듈을 이용한 코루틴 구현 예시
@bot.command()
async def ping(ctx):
await ctx.channel.send(f'pong! 퐁!')
3. async - await
- 코루틴 객체가 작업을 끝내기 전 접근 방지를 위해 비동기 함수 내에서 await 키워드를 사용
- 해당 작업을 진행하는 동안 이벤트 루프를 확인하여 다른 작업이 있다면 처리를 진행함
4. 이벤트 루프
- 프로그램의 작업을 대기시키다 처리하는 프로그래밍 구조체
- asyncio 클래스의 get_event_loop 메소드 호출하여 생성
- 생성한 이벤트 루프 객체에 코루틴 객체를 인자로 입력하여 실행
- 이벤트 루프를 close