async (2) 썸네일형 리스트형 [Python] 병행성(Concurrency)(3) - Coroutine 흐름제어 병행성(Concurrency) : 한 컴퓨터가 여러 일을 동시에 수행 -> 단일 프로그램안에서 여러일을 쉽게 해결 병렬성(Parallelism) : 여러 컴퓨터가 여러 작업을 동시에 수행 -> 속도 코루틴(Coroutine) : 단일(싱글) 스레드, 스택을 기반으로 동작하는 비동기 작업 스레드 : OS 관리, cpu 코어에서 실시간, 시분할 비동기 작업 -> 멀티스레드 yield, send : 메인 서브 코루틴 제어, 상태, 양방향 전송 yield from 서브루틴 : 메인루틴에서 호출 -> 서브루틴에서 수행(흐름제어) 코루틴 : 루틴 실행 중 중지 -> 동시성 프로그래밍 코루틴 : 스레드에 비해 오버헤드 감소 스레드 : 싱글스레드 -> 멀티스레드 -> 복잡 -> 공유되는 자원 -> 교착 상태.. [Python] Blocking vs Non-Blocking, Sync vs Async Blocking vs Non-blocking Blocking - 시스템 콜 요청시 -> 커널 IO 작업 완료 시 까지 응답 대기 - 제어권(IO작업) -> 커널 소유 -> 응답(Response)전 까지 대기(Block) -> 다른 작업 수행 불가(대기) Non-blocking - 시스템 콜 요청시 -> 커널 IO 작업 완료 여부 상관없이 즉시 응답 - 제어권(IO작업) -> 유저 프로세스 전달 -> 다른 작업 수행 가능(지속) -> 주기적 시스템 콜 통해서 IO 작업 완료 여부 확인 Async vs Sync Sync : IO 작업 완료 여부에 대한 Noty는 유저프로세스(호출하는 함수) -> 커널(호출되는 함수) Async : IO 작업 완료 여부에 대한 Noty는 커널(호출되는 함수) -> 유저프로세스.. 이전 1 다음