采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
以http请求为例,请求的过程也是阻塞的 但协程中子生成器是不可以阻塞的 那协程在其中的作用是什么呢?
首先http请求在很多库中都是阻塞的,比如requests, urllib等这些库的http请求确实都是阻塞的,但是还是有不少库的http请求不是阻塞的,比如aiohttp, tornado的httprequest等都是非阻塞的http库,协程需要配合这些非阻塞库来使用,协程的目的是为了提高单机的并发能力
bobby老师,“协程需要配合这些非阻塞库来使用”是不是意味着不能在协程中写同步IO代码呢? 那如果我希望在处理完业务逻辑后异步地去执行记录日志、发送邮件等操作,这样的需求怎么利用协程实现呢?
协程需要配合这些非阻塞库来使用的意思不是说不能在协程中写同步代码。写同步代码没有任何问题。不过这样会严重影响性能,如果在协程中写了同步代码性能会比使用多线程还要低的,所以是不建议这样使用而已,如果所用的库只支持同步接口那么可以使用协程加线程池的方式来完成
如果是这样的话,为啥不直接使用多线程,混用多线程和协程有什么优势吗老师?
登录后可查看更多问答,登录/注册
socket编程/多线程/多进程/线程池/asyncio并发编程/协程和异步IO
1.3k 31
1.2k 24
1.1k 16
1.5k 10
1.2k 9
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号