비동기 def 문을 사용해야 합니다
코루틴이 할 수 있는 일:
1. 미래 결과를 기다립니다.
2. 다른 코루틴을 기다립니다(결과 생성 또는 예외 발생)
3 , 기다리고 있는 코루틴에 결과를 생성합니다
4. 기다리고 있는 코루틴에 예외를 발생시킵니다
코루틴 함수를 호출하면 코루틴이 실행되지 않고 그냥 반환됩니다. 코루틴 개체
코루틴 개체를 실행하는 방법에는 두 가지가 있습니다:
1. 이미 실행 중인 다른 코루틴에서 기다리려면 await
를 사용하세요. await
等待它
2、通过ensure_future
函数计划它的执行
只有某线程的loop运行了,协程才可能运行
下面的例子:
先拿到当前线程缺省的loop,然后将协程对象交给loop.run_until_complete,协程对象随后会在loop里得到运行
loop = asyncio.get_event_loop() loop.run_until_complete(do_some_work(3))
run_until_complete
是一个阻塞调用,知道协程运行结束才返回
它的参数是一个future,但是我们传给它的却是协程对象,它在内部做了检查,通过ensure_future函数把协程对象包装成了future
我们可以这样写:
loop.run_until_complete(asyncio.ensure_future(do_some_work(3)))
多个协程在一个loop里运行,为了把多个协程交给loop,需要借助asyncio.gathre
loop.run_until_complete(asyncio.gather(do_some_work(1), do_some_work(3)))
run_until_complete
는 코루틴이 완료될 때까지 반환되지 않지만 해당 매개변수는 future입니다. is 코루틴 객체는 내부적으로 검사되고, verify_future 함수를 통해 코루틴 객체가 future로 패키징됩니다다음과 같이 작성할 수 있습니다:loop = asyncio.get_event_loop() #获取当前线程loop coros_list = [] for i in range(2000): coros_list.append(main(i)) loop.run_until_complete(asyncio.gather(*coros_list))
asyncio.gathre
함수를 사용하거나(loop = asyncio.get_event_loop() #获取当前线程loop loop.run_until_complete(do_some_work(loop, 1)) loop.run_until_complete(do_some_work(loop, 3)) loop.close()
loop = asyncio.get_event_loop() #获取当前线程loop loop.run_until_complete(do_some_work(loop, 1)) loop.close() loop.run_until_complete(do_some_work(loop, 3)) # 此处异常
def done_callback(futu): print('Done') futu = asyncio.ensure_future(do_some_work(3)) futu.add_done_callback(done_callback) loop.run_until_complete(futu)
코루틴에 참여하는 것은 IO 읽기 작업입니다. 데이터 읽기가 완료된 후 데이터 처리의 다음 단계에 대한 알림을 받기를 바랍니다. . 이는 미래에 콜백을 추가하여 구현할 수 있습니다asyncio.get_running_loop() # 返回当前os线程中正在运行的事件循环 asyncio.get_event_loop() # 获取当前事件循环 asyncio.set_event_loop(loop) # 获取当前事件循环 asyncio.new_event_loop() # 创建并返回一个新的事件循环对象로그인 후 복사Callback
loop = asyncio.new_event_loop() asyncio.set_event_loop(loop)
asyncio.get_event_loop()
If: 🎜🎜🎜🎜현재 스레드가 메인 스레드입니다🎜🎜🎜🎜현재 스레드가 이벤트 루프를 시작하지 않습니다🎜🎜🎜🎜비동기 호출 이오 .get_event_loop ()메소드 모임 새로운 기본 이벤트 루프를 생성하고 현재 스레드의 이벤트 루프로 설정합니다. 🎜🎜현재 get_event_loop()는 다음과 같습니다. 🎜rrreee위 내용은 Python의 asyncio 공통 함수를 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!