파이썬에서`await`가 이벤트 루프를 생성합니까?

xjcl

await예를 들어 비동기 Python 코드에서 코 루틴을 사용 하면 정확히 어떤 일이 발생하는지 궁금합니다 .

await send_message(string)

(1) send_message이벤트 루프에 추가되고 호출 코 루틴이 이벤트 루프에 대한 제어를 포기합니다.

(2) 직접 뛰어 들다 send_message

내가 읽은 대부분의 설명 은 호출 코 루틴을 exiting 으로 설명하므로 (1)을 가리 킵니다 . 그러나 내 자신의 실험은 (2)가 사례임을 시사합니다. 나는 호출자 뒤에서 호출자 앞에서 코 루틴을 실행하려고 시도했지만 이것을 달성 할 수 없었습니다.

미하일 게라시 모프

(2) 맞습니다 asyncio.Future. 실제로 블로킹하는 것을 기다리지 않는 한 이벤트 루프에 제어를 반환하지 않습니다 .

상속을 통해 기본 이벤트 루프 구현변경하여 확인할 수 있습니다 .

import asyncio


class TestEventLoop(asyncio.SelectorEventLoop):
    def _run_once(self):
        print('inside event loop')
        super()._run_once()


async def func2():
    print('inside func2()')
    await asyncio.sleep(1)


async def func1():
    print('inside func1()')
    await func2()


async def main():
    print('inside main()')
    await func1()


loop = TestEventLoop()
asyncio.set_event_loop(loop)
try:
    loop.run_until_complete(main())
finally:
    loop.close()

결과:

inside event loop
inside main()
inside func1()
inside func2()
inside event loop
inside event loop
inside event loop

그러나 이것은 기본 이벤트 루프 구현의 세부 사항입니다 . 즉, 모든 종류의 이벤트 루프에 대해 (2) 사실이 보장 되지 않으며이 동작에 의존해서는 안됩니다 .

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

RuntimeError : 이벤트 루프가 비동기 파이썬에서 닫혔습니다.

분류에서Dev

파이썬 for 루프가 목록을 생성합니까?

분류에서Dev

이벤트 루프에서 asyncio 생성기 데이터를 다시 생성 할 수 있습니까?

분류에서Dev

Windows Bootloader가 이벤트를 생성합니까?

분류에서Dev

파이썬은 파이썬 for 루프에서 더 많은 요소를 생성합니다.

분류에서Dev

jQuery : $ (element) .on ( "click", ... 여러 클릭 이벤트를 생성합니까?

분류에서Dev

파이썬에서 루프를 위해 정수 변환-루프가 함수 값을 무시합니까?

분류에서Dev

파이썬에서 for 루프를 사용하여 json 속성 값을 업데이트합니까?

분류에서Dev

반응 : componentDidUpdate 또는 render의 이벤트 트리거 Ajax 호출은 무한 루프를 생성합니다.

분류에서Dev

트리 보나 치 시퀀스 파이썬 코드가 while 루프 내에서 for 루프를 건너 뜁니다.

분류에서Dev

파이썬에서 numpy 루프 속도를 높이십니까?

분류에서Dev

dojo 위젯이 파괴 될 때 이벤트를 생성합니까 아니면 강제로 이벤트를 생성 할 수 있습니까?

분류에서Dev

setTimeout (0)보다 Javascript 이벤트 루프를 생성하는 더 빠른 방법이 있습니까?

분류에서Dev

UI 이벤트 (클릭, 마우스 다운 등)가 JavaScript의 이벤트 루프를 통과합니까?

분류에서Dev

이벤트 루프를 생성하지 않고 코 루틴 호출

분류에서Dev

Python에서 asyncio 이벤트 루프를 닫으면 끝에 예외가 발생합니다.

분류에서Dev

파이썬은 for 루프에서 요소를 제거합니다.

분류에서Dev

결합 함수 대안에 대한 논리 조건 문제가있는 루프를 사용하여 파이썬으로 문자열을 생성합니까?

분류에서Dev

종료 명령으로 키를 누를 때 진행되는 파이썬에서 루프를 어떻게 생성합니까?

분류에서Dev

루프의이 Array.new가 메모리 누수를 생성합니까?

분류에서Dev

루프 선택에서 생성 된 onChange 이벤트 트리거

분류에서Dev

이 루프에서 업데이트되지 않는 변수를 어떻게 생성합니까?

분류에서Dev

for 루프에서 파이썬 람다 필터 코드를 생성하는 방법은 무엇입니까?

분류에서Dev

파이썬에서 루프를 연습하는 데 문제가 있습니다.

분류에서Dev

내 키보드가 가짜 이벤트를 생성합니다.

분류에서Dev

평균을 위해 파이썬에서 함수를 생성합니까?

분류에서Dev

laravel 이벤트가 실제 채팅 앱에서 오류를 생성합니다.

분류에서Dev

with 문과 for 루프를 파이썬에서 결합

분류에서Dev

파이썬에서 루프를 사용하여 합계

Related 관련 기사

  1. 1

    RuntimeError : 이벤트 루프가 비동기 파이썬에서 닫혔습니다.

  2. 2

    파이썬 for 루프가 목록을 생성합니까?

  3. 3

    이벤트 루프에서 asyncio 생성기 데이터를 다시 생성 할 수 있습니까?

  4. 4

    Windows Bootloader가 이벤트를 생성합니까?

  5. 5

    파이썬은 파이썬 for 루프에서 더 많은 요소를 생성합니다.

  6. 6

    jQuery : $ (element) .on ( "click", ... 여러 클릭 이벤트를 생성합니까?

  7. 7

    파이썬에서 루프를 위해 정수 변환-루프가 함수 값을 무시합니까?

  8. 8

    파이썬에서 for 루프를 사용하여 json 속성 값을 업데이트합니까?

  9. 9

    반응 : componentDidUpdate 또는 render의 이벤트 트리거 Ajax 호출은 무한 루프를 생성합니다.

  10. 10

    트리 보나 치 시퀀스 파이썬 코드가 while 루프 내에서 for 루프를 건너 뜁니다.

  11. 11

    파이썬에서 numpy 루프 속도를 높이십니까?

  12. 12

    dojo 위젯이 파괴 될 때 이벤트를 생성합니까 아니면 강제로 이벤트를 생성 할 수 있습니까?

  13. 13

    setTimeout (0)보다 Javascript 이벤트 루프를 생성하는 더 빠른 방법이 있습니까?

  14. 14

    UI 이벤트 (클릭, 마우스 다운 등)가 JavaScript의 이벤트 루프를 통과합니까?

  15. 15

    이벤트 루프를 생성하지 않고 코 루틴 호출

  16. 16

    Python에서 asyncio 이벤트 루프를 닫으면 끝에 예외가 발생합니다.

  17. 17

    파이썬은 for 루프에서 요소를 제거합니다.

  18. 18

    결합 함수 대안에 대한 논리 조건 문제가있는 루프를 사용하여 파이썬으로 문자열을 생성합니까?

  19. 19

    종료 명령으로 키를 누를 때 진행되는 파이썬에서 루프를 어떻게 생성합니까?

  20. 20

    루프의이 Array.new가 메모리 누수를 생성합니까?

  21. 21

    루프 선택에서 생성 된 onChange 이벤트 트리거

  22. 22

    이 루프에서 업데이트되지 않는 변수를 어떻게 생성합니까?

  23. 23

    for 루프에서 파이썬 람다 필터 코드를 생성하는 방법은 무엇입니까?

  24. 24

    파이썬에서 루프를 연습하는 데 문제가 있습니다.

  25. 25

    내 키보드가 가짜 이벤트를 생성합니다.

  26. 26

    평균을 위해 파이썬에서 함수를 생성합니까?

  27. 27

    laravel 이벤트가 실제 채팅 앱에서 오류를 생성합니다.

  28. 28

    with 문과 for 루프를 파이썬에서 결합

  29. 29

    파이썬에서 루프를 사용하여 합계

뜨겁다태그

보관