尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

具身智能四(asyncio 事件循环)

具身智能四(asyncio 事件循环) 什么是协程异步函数在 Python 中被称为协程它们是可等待对象可以在事件循环中被挂起和恢复。Python 中的异步函数协程函数是用async def定义的函数‌调用时不会立即执行函数体‌而是返回一个‌协程对象‌必须通过‌事件循环‌event loop调度并在内部使用await挂起/恢复才能实现非阻塞的并发执行。异步≠并行。它是‌单线程内的协作式并发‌通过快速切换任务提升 I/O 等待效率CPU 密集型任务仍需用多进程。协程出现之前Python 开发者需要依赖threading或multiprocessing模块来实现并发这不仅编程模型复杂而且在处理大量并发网络连接时效率低下。asyncio提供了事件循环和协程的概念使得开发者能够以更低的开销实现大规模 IO 密集型任务的并发。协程原理在 Python 中使用async def定义一个异步函数协程函数。调用时不会立即执行而是返回一个协程对象。要真正运行它需要用await等待或者交给事件循环。什么是asyncioasyncio 是 Python 标准库中用来写异步并发代码的框架‌它通过单线程事件循环让程序在等待 I/O 时能处理其他任务特别适合网络请求、文件读写等 IO 密集型场景 。运行异步函数1、交给事件循环2、await等待asyncio.run 会自动创建事件循环并运行主协程2、调用例子loop, loop_thread get_loop() # 往后台循环提交异步任务 future asyncio.run_coroutine_threadsafe(my_async_func(), loop) result future.result()注意1每个线程只能有一个正在运行的 loop。新建出来的 loop 只属于刚刚启动的那条子线程。主线程不能直接 await 这个 loop 里面的协程只能用run_coroutine_threadsafe跨线程提交协程必须用asyncio.run_coroutine_threadsafe不能直接loop.create_task2程序退出会自动销毁 (daemon)但组件正常关闭最好手动loop.call_soon_threadsafe(loop.stop)
返回列表