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是无法执行的
需要
登录
才可以提问哦
: