Python 의 한 프로그램 에서 여러 번 의 이벤트 순환 을 어떻게 사용 하 는 지 상세 하 게 설명 합 니 다.
본 고 는 주로 Python 의 한 프로그램 에서 여러 번 의 이벤트 순환 을 사용 하 는 것 에 관 한 내용 을 소개 합 니 다.저 희 는 Python 비동기 프로그램 작성 에 있어 다음 과 같은 구 조 를 자주 사용 합 니 다.
import asyncio
async def doAsync():
await asyncio.sleep(0)
#...
if __name__ == "__main__":
loop = asyncio.get_event_loop()
loop.run_until_complete(doAsync())
loop.close()
이것 은 물론 좋 은 것 이지 만 두 번 째 loop 을 사용 할 때 프로그램 이 이상RuntimeError: Event loop is closed
을 던 집 니 다.이것 도 크게 나 무 랄 것 이 없습니다.이상 적 인 프로그램 도 한 시간 순환 에서 각종 비동기 IO 문 제 를 해결 해 야 합 니 다.그러나 Ipython 과 같은 터미널 환경 에 놓 여 있 습 니 다.Python 의 비동기 프로그램 작성 을 연습 하려 면 매번 터미널 을 다시 시작 하 는 것 이 너무 번 거 로 울 수 있 습 니 다.이 럴 때 더 좋 은 해결 방안 이 있 는 지 찾 아야 합 니 다.
해결 방안
우 리 는
asyncio.new_event_loop
함 수 를 사용 하여 새로운 이벤트 순환 을 만 들 고asyncio.set_event_loop
전역 의 이벤트 순환 을 설정 할 수 있 습 니 다.이 럴 때 비동기 이벤트 순환 을 여러 번 실행 할 수 있 지만 기본asyncio.get_event_loop
을 저장 하고 이벤트 순환 이 끝 날 때 되 돌려 주 는 것 이 좋 습 니 다.결국 우리 코드 는 이렇게
코드
import asyncio
async def doAsync():
await asyncio.sleep(0)
#...
def runEventLoop()
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
loop.run_until_complete(doAsync())
loop.close()
if __name__ == "__main__":
oldloop = asyncio.get_event_loop()
runEventLoop()
runEventLoop()
asyncio.set_event_loop(oldloop)
감상이벤트 순환 은 원래 함께 많은 일 을 해 야 하 는데 정식 Python 코드 에 서 는 하나의 기본 이벤트 순환 만 사용 하 는 것 이 좋 습 니 다.평소에 공부 하고 연습 하면 편 합 니 다.
총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.