阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

IO同步

195次阅读
没有评论

共计 767 个字符,预计需要花费 2 分钟才能阅读完成。

一、模拟普通同步

  • 我们用两个函数来模拟两个客户端请求,并依次进行处理

    def req_a(): """模拟请求 a""" print('开始处理请求 req_a') print('完成处理请求 req_a') def req_b(): """模拟请求 b""" print('开始处理请求 req_b') print('完成处理请求 req_b') def main(): """模拟 tornado 框架,处理两个请求""" req_a() req_b() if __name__ == "__main__": main()

    执行结果

    开始处理请求 req_a 完成处理请求 req_a 开始处理请求 req_b 完成处理请求 req_b

    说明:同步是按部就班的依次执行,始终按照同一个步调执行,上一个步骤未执行完不会执行下一步

二、模拟耗时同步

  • 在处理请求 req_a 时需要执行一个耗时的工作(如 IO)其执行过程如下

    import time def long_io(): """模拟耗时 IO 操作""" print("开始执行 IO 操作") time.sleep(5) print("完成 IO 操作") return "io result" def req_a(): print("开始处理请求 req_a") ret = long_io() print("ret: %s" % ret) print("完成处理请求 req_a") def req_b(): print("开始处理请求 req_b") print("完成处理请求 req_b") def main(): req_a() req_b() if __name__=="__main__": main()

    执行过程:

     开始处理请求 req_a
    开始执行 IO 操作
    完成 IO 操作
    ret: io result
    完成处理请求 req_a
    开始处理请求 req_b
    完成处理请求 req_b
    
  
  说明:耗时的操作会将代码执行阻塞住,即 req_a 未处理完 req_b 是无法执行的

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-05-26发表,共计767字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中