组团学

IO同步

阅读 (167493)

一、模拟普通同步

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

    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是无法执行的

需要 登录 才可以提问哦