Django 비동기 orm 을 실습하다가 비동기에 대한 이해가 모자란 거 같아서 공부차원에서 글을 써본다.
정의
비동기란 작업의 완료 여부와 상관없이 다음 작업을 수행할 수 있는 방식을 의미한다. 즉 한 작업이 완료되지 않아도 다음 작업을 실행할 수 있는 비선점 방식이다. 하나의작업이 끝나기 전에 다른 작업으로 전환이 일어나면 사용자 인터페이스가 응답하지 않을 수 있기 때문에 비선점 방식을 사용한다.
비선점 방식이란?
비선점 방식은 비동기 프로그래밍에서 사용되는 작업 스케줄링 방식 중 하나이다. 프로세스가 자원을 할당 받았을 경우 자원을 스스로 반납할 때까지 계속 그 자원을 사용하도록 허용한다. 따라서 비선점 방식은 작업이 시작되면 다른 작업이 완료될 때까지 실행되며, 현재 실행 중인 작업이 종료되지 않으면 다른 작업을 실행할 수 없다.
비동기 방식에서는 모든 작업이 병렬적으로 처리되며, 작업이 완료되는 대로 결과가 반환된다. 이는 작업을 순차적으로 처리하는 동기 방식보다 더욱 효율적이다. 예를 들어, 웹 페이지를 로드할 때 비동기 방식으로 작동하면, 페이지가 이미지와 자바스크립트 파일을 로드하는 동안 텍스트 컨텐츠를 표시할 수 있다.
동기와 비동기의 차이
실행 방식
- 동기: 작업이 순차적으로 진행되며, 이전 작업이 완료돼야 다음 작업을 진행할 수 있다.
- 비동기: 작업이 병렬적으로 진행되며, 이전 작업이 완료되지 않아도 다음 작업을 진행할 수 있다.
결과 반환
- 동기: 작업이 완료되면 즉시 결과가 반환된다.
- 비동기: 작업이 완료될 때까지 대기하지 않고, 결과가 반환되는 시점에 콜백 함수를 호출하여 결과를 처리한다.
대기 시간
- 동기: 작업이 완료될 때까지 대기해야 하므로, 작업이 오래 걸리는 경우 대기 시간이 길어질 수 있다.
- 비동기: 작업이 병렬적으로 처리되므로, 작업이 오래 걸리더라도 다른 작업을 실행하여 대기 시간을 최소화할 수 있다.