참고
https://docs.python.org/ko/3/library/asyncio-eventloop.html
이벤트 루프는 모든 asyncio 응용 프로그램의 핵심입니다. 이벤트 루프는 비동기 태스크 및 콜백을 실행하고 네트워크 IO 연산을 수행하며 자식 프로세스를 실행합니다.
응용 프로그램 개발자는 일반적으로 asyncio.run()과 같은 고수준의 asyncio 함수를 사용해야 하며, 루프 객체를 참조하거나 메서드를 호출할 필요가 거의 없습니다.
이 절은 주로 이벤트 루프 동작을 세부적으로 제어해야 하는 저수준 코드, 라이브러리 및 프레임워크의 작성자를 대상으로 합니다.
다음 저수준 함수를 사용하여 이벤트 루프를 가져오거나 설정하거나 만들 수 있습니다.:
asyncio.get_event_loop() :
현재 이벤트 루프를 가져옵니다.
현재 OS 스레드에 현재 이벤트 루프가 설정되어 있지 않으면 OS 스레드가 메인이고 set_event_loop()아직 호출되지 않은 경우 asyncio는 새 이벤트 루프를 생성하여 현재 이벤트 루프로 설정합니다.
저수준 함수를 사용하여 수동으로 이벤트 루프를 만들고 닫는 대신 asyncio.run() 함수를 사용하는 것도 고려하십시오.
add_signal_handler(signum, callback, *args)
callback을 signum 시그널의 처리기로 설정합니다.
콜백은 다른 대기 중인 콜백과 해당 이벤트 루프의 실행 가능한 코루틴과 함께 loop에 의해 호출됩니다. signal.signal()을 사용하여 등록된 시그널 처리기와 달리, 이 함수로 등록된 콜백은 이벤트 루프와 상호 작용할 수 있습니다.
ex)
_event_loop.add_signal_handler(sget_event_loopignal.SIGINT, self._exit_event_loop)
_event_loop.add_signal_handler(signal.SIGTERM, self._exit_event_loop)
ctrl + c 랑 process 킬 되면 self._exit_event_loop 함수가 콜백 됨.
ex) self._exit_event_loop콜백함수 보면, 코루틴테이블에 등록된함수를 짜르는 코드들이 있을거임
asyncio.get_event_loop().run_until_complete(future)
future(Future의 인스턴스)가 완료할 때까지 실행합니다.
future 에 함수 넣어서 사용하는데 ready()에 있는 코루틴함수를 계속 실행함.
future()함수가 끊나지만 않으면, future안에 등록된 코루틴함수는 계속 돈다.
asyncio.get_event_loop().run_forever()
stop()가 호출될 때까지 이벤트 루프를 실행합니다.
asyncio.get_event_loop().stop()
이벤트 루프를 중지합니다.
asyncio.get_event_loop().close()
이벤트 루프를 닫습니다.
asyncio.get_event_loop().call_soon(callback, *args, context=None)
이벤트 루프의 다음 이터레이션 때 args 인자로 호출할 callback 콜백을 예약합니다.
콜백은 등록된 순서대로 호출됩니다. 각 콜백은 정확히 한 번 호출됩니다.
create_task(coro, *, name=None)
코루틴 의 실행을 예약합니다. Task 객체를 반환합니다.
제삼자 이벤트 루프는 상호 운용성을 위해 자신만의 Task 의 서브 클래스를 사용할 수 있습니다. 이 경우, 결과 형은 Task 의 서브 클래스입니다.
'언어 정리 > python_비동기관련_lib' 카테고리의 다른 글
asyncio.queue 를 쓰레드와 asyncio 사이에서 사용 하기 (1) | 2022.07.13 |
---|---|
AsyncIO_5_멀티 스크랩핑 실습(인프런) (0) | 2022.06.04 |
python 쓰레드 개념 (0) | 2022.05.03 |
AsyncIO_3_{함수 : asyncio.Event 라이브러리 ( wait(),set(),clear() ) } asynchronous primitive (0) | 2022.04.20 |
asyncIO_2_( asyncIO개념(Idle state, I/O wait,I/O연산) + 함수 : gather ) (0) | 2022.04.20 |
댓글