请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

协程的应用方向都有哪些?

以http请求为例,请求的过程也是阻塞的 但协程中子生成器是不可以阻塞的 那协程在其中的作用是什么呢?

正在回答 回答被采纳积分+3

插入代码

1回答

bobby 2019-04-22 12:10:48

首先http请求在很多库中都是阻塞的,比如requests, urllib等这些库的http请求确实都是阻塞的,但是还是有不少库的http请求不是阻塞的,比如aiohttp, tornado的httprequest等都是非阻塞的http库,协程需要配合这些非阻塞库来使用,协程的目的是为了提高单机的并发能力

1 回复 有任何疑惑可以回复我~
  • Aioria_ #1
    bobby老师,“协程需要配合这些非阻塞库来使用”是不是意味着不能在协程中写同步IO代码呢?
    
    那如果我希望在处理完业务逻辑后异步地去执行记录日志、发送邮件等操作,这样的需求怎么利用协程实现呢?
    回复 有任何疑惑可以回复我~ 2020-01-04 16:23:46
  • bobby 回复 Aioria_ #2
    协程需要配合这些非阻塞库来使用的意思不是说不能在协程中写同步代码。写同步代码没有任何问题。不过这样会严重影响性能,如果在协程中写了同步代码性能会比使用多线程还要低的,所以是不建议这样使用而已,如果所用的库只支持同步接口那么可以使用协程加线程池的方式来完成
    回复 有任何疑惑可以回复我~ 2020-01-05 12:18:31
  • 如果是这样的话,为啥不直接使用多线程,混用多线程和协程有什么优势吗老师?
    回复 有任何疑惑可以回复我~ 2023-01-28 15:28:16
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号