linux - Python中aysncio的事件循环是属于线程还是进程?
问题描述
默认的get_event_loop获取的loop是基于线程还是进程,找了很久的官方文档才找到这么一句描述,看起来是属于当前线程的?
18.5.2.4. Event loop policies and the default policyFor most users of asyncio, policies never have to be dealt with explicitly, since the default global policy is sufficient. The default policy defines context as the current thread, and manages an event loop per thread that interacts with asyncio. The module-level functions get_event_loop() and set_event_loop() provide convenient access to event loops managed by the default policy.
那么官方文档提供的另外两个获取事件循环(下面的pre块)方法一般用于什么地方?关于事件循环尝试看了源码但涉及到多路IO复用问题遂放弃,求各位网友的指点?
loop = asyncio.new_event_loop()asyncio.set_event_loop(loop)
问题解答
回答1:属于协程,即用户态线程,在单条内核线程上分出多个用户线程,本质还是单线程,算是一个高级语法糖,让你可以用同步的写法实现异步的效果(io多路复用维护起状态来是相当恶心的,现在交由asyncio来帮你维护了)
相关文章:
1. javascript - node引入文件路径中的@是什么意思?2. javascript - Angular利用 broadcast和 on实现页面跳转并且传递数据 但是跳转后收不到数据3. java - 图片上传后,立即访问出现404,重新部署项目后正常可以访问4. css - chrome浏览器input记录上次cookie信息后,有个黄色背景~如何去除!5. javascript - easyui textbox绑定onchange事件不能获取最新的文本框的值6. javascript - Jquery click()事件的禁用7. 单元格本来是写文字的地方插入背景图片,这种方式正确吗?8. html - css 文件内,有的样式没调用, 有没有工具删除这部分没调用的内容?9. PHP类中的$this10. javascript - 请教如何获取百度贴吧新增的两个加密参数
