本篇文章给大家带来的内容是关于python中Tornado的同步与异步I/O的介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

协程是Tornado种推荐的编程方式,使用协程可以开发出简捷、高效的异步处理代码。

同步与异步I/O对比

众所周知,CPU的运行效率高于磁盘的存储,也高于网络请求,这就导致CPU对数据的处理和数据的存储或者网络请求(I/O操作)步伐不一致,此时可以选择I/O操作同步或者异步。

同步I/O操作,导致进程阻塞,直到I/O操作完成;

异步I/O操作,不会导致请求进程阻塞。

Tornado同步I/O的简单代码实例:

代码:#导入Tornado的HTTP客户端

from tornado.httpclient import HTTPClient

def synchronous_visit():

http_client=HTTPClient()

#阻塞,知道对网址访问完成

respone=http_client.fetch("http://www.baidu.com")

print(respone.body)

synchronous_visit()

HTTPClient是Tornato的同步访问HTTP客户端。上述代码中的synchronous_visit()函数使用了典型的同步I/O操作来访问网址,该函数的执行时间取决于网络速度、对方服务器的响应速度,只有当访问完全结束并获取结果后,该函数才能执行完成。

Tornado异步I/O的简单代码实例:from tornado.httpclient import AsyncHTTPClient

def handle_response(response):

print(response.body)

def asyncronous_visit():

http_client=AsyncHTTPClient()

http_client.fetch("http://www.baoidu.com",callback=handle_response)

AsyncHTTPClient是Tornado的异步访问HTTP客户端。在上述代码中的asynchronous_visit()函数中使用了AsyncHTTPClient对第三方网站进行异步访问,http_client.fetch()函数会在调用后立刻返回而无需等待实际访问的完成,从而导致asynchronous_visit()也会立刻执行完成。当对网址的访问实际完成后,AsyncHTTPClient会调用callback参数指定的函数,可以在这个函数中处理访问结果。

python同步异步_python中Tornado的同步与异步I/O的介绍(附示例)相关推荐

  1. python shelve模块_Python中shelve模块的简单介绍(附示例)

    本篇文章给大家带来的内容是关于Python中shelve模块的简单介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. shelve:对象持久化的保存的模块,将对象保存到文件 ...

  2. python异步_Python中的异步编程

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. Quora的使命就是分享和增加全世界的知识,并且为了达到这个使命,我们不断地推出改进来让Quora对于我们 ...

  3. mysql主主复制半同步_mysql主从复制中的半同步复制

    实验mysql借助google提供的插件,完成半同步复制模型: 物理机依然是win7系统,虚拟机为centos7: 主节点:192.168.255.2 从节点:192.168.255.3 先配置为主从 ...

  4. python map用法_Python中ChainMap的一种实用用法

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 简而言之ChainMap:将多个字典视为一个,解锁Python超能力. Python标准库中的集合模块包含 ...

  5. python的命名空间_python中命名空间的三种方式介绍(附示例)

    本篇文章给大家带来的内容是关于python中命名空间的三种方式介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. python中的命名空间分三种: 内置的命名空间,在启动解 ...

  6. python基本统计量_Python中简单统计量的计算

    本篇文章给大家带来的内容是关于Python中简单统计量的计算,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1.这些操作都要确保已经在电脑中安装好了Anaconda集成库,如果安装好 ...

  7. python标志变量_Python 中的 global 标识对变量作用域的影响

    global 标识用于在函数内部,修改全局变量的值. 我们可以通过以下规则,来判定一个变量到底是在全局作用域还是局部作用域: 变量定义在全局作用域,那就是全局变量. 变量在函数中定义,并且加了 glo ...

  8. python数据格式简介_Python中数据类型时间的介绍(附代码)

    本篇文章给大家带来的内容是关于Python中数据类型时间的介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1.什么是时间数据类型 Python中表示时间类型的数据结构为 ...

  9. python object类_Python中一切皆对象,这个对象究竟是什么?

    点击上方蓝字CGRnDStudio关注我们" CG TD编程技术相关领域自媒体 " 作者:古明地盆 https://www.cnblogs.com/traditional/p/13 ...

最新文章

  1. oracle触发器不允许修改数据库,Oracle数据库使用触发器记录表数据修改记录
  2. 学习《apache源代码全景分析》之摘录
  3. android邮件发送几种方式
  4. 响应式编程知多少 | Rx.NET 了解下
  5. 科学计算机二进制算法,计算机是怎么理解二进制的?
  6. Python序列类型常用函数练习:enumerate() reversed() sorted() zip()
  7. 关于telnet的问题
  8. Linux 之父家断电六天:内核更新延期;华为 EMUI 11 用户突破1亿;美国得州最大电力公司申请破产 | 极客头条...
  9. bzoj1003[ZJOI2006]物流运输
  10. 大学学习路线规划建议贴
  11. 汽车电子控制系统的构成
  12. 5月地图软件影响力报告:百度谷歌搜狗居前三甲
  13. 鼠标划动网页或者窗口时进度条总是上下乱跳,有可能是你的上下按键坏掉了
  14. 苹果手机换电池对手机有影响吗_电池寿命真的影响手机性能~iPhone手机更换电池后性能对比...
  15. 适合所有网站的前端优化技巧,值得你收藏!
  16. PyTorch 简介
  17. 说说硬件吧,CPU,不应被埋没的计算机产业的功臣。
  18. 学习记录 - 反汇编工具【IDA】
  19. 51job简历导出php,PHPWord 导出简历经验小结
  20. 夫妻离婚双胞胎的抚养权怎么争取

热门文章

  1. hadoop过程中遇到的错误与解决方法
  2. JDBC executeBatch 抛出异常停止
  3. MySQL单表数据量过千万,采坑优化记录,完美解决方案
  4. 异常 Cannot resolve class or package
  5. kail linux安装软件提示“无法定位软件包”解决方法
  6. [持续更新]UnsatisfiedLinkError常见问题及解决方案
  7. 将嵌套的Python字典转换为对象?
  8. MATLAB编程与应用系列-第2章 数组及矩阵的创建及操作(4)
  9. 自动化运维系列之Cobbler (资源)
  10. Propel项目改为基于TensorFlow.js