Python使用Twisted总结 异步编程
来源:互联网 发布:电子商务中的网络指 编辑:程序博客网 时间:2024/05/20 10:56
Twisted对网络应用开发者来说是一个平台。Python语言本身就很强大,但它缺少很多其他语言都在极力添加的功能。现在好了,Twisted是一款很好的(稍微特别的)纯Python框架或库,这取决于你如何看待它,并且它不断的在完善。
1. 如果做一件事情是有顺序的,先做完Task1,再做Task2,最后做Task3,这类事情也是我们日常见的最多的一种情况,如下图所示:
2. 如果做一件事情并没有顺序之分,可以同时进行,每一件事情也是相对独立的,其实这就是一种同步模型。当然,其实这也是一种理想情况,在大多数情况下,进程之间或线程之间往往要进行通信,一个任务会等待另外一个任务的返回结果,这就有些较为复杂了,如下图所示:
3. 在异步模型中,任务是交替运行的,但仍然在一个进程中,其中每个任务的运行状态都是可以被我们控制的,如下图所示:
异步模型与同步模型有什么区别吗?
a) 同步模型中的任务交替运行,是需要多个线程协同完成的,受到程序的控制,而在异步模型中则不需要。
b) 多线程本身就受到操作系统的调度与管理,所以同步模型本身就受到操作系统控制的,而在异步模型中一个任务会一直运行下去,直到任务被运行完或者程序暂停这个任务而去执行令一个任务。
异步模型有什么特点,为什么要深入了解并学习呢?
异步模型比同步模型简单,因为异步模型只有一个进程而且任务的停止和运行状态是可控的。而在同步模型中,我们需要把每一个任务分成很多步骤,然后再有序的把他们组合起来。如果一个任务用到了令一个任务的结果,这个任务需要接受另一个任务的输出做为他自己的输入,而且这种接收的数据经常是一段一段的而不是一个整体。
异步模型与同步模型都是一个线程的话,他们执行相同的任务应该花费相同的时间,甚至比同步模型花费的时间更多,为什么要才采用异步的模型呢?
如果程序中会有阻塞、被强迫等待等情况,异步模型会比同步模型运行速度快,同步模型在有阻塞的时候的执行过程如下图所示:
图中灰色的部分代表阻塞(等待),其中阻塞的原因很多时候是由于I/O操作,这样的一个同步程序被称为“阻塞程序”。异步程序设计的原理就是当其中一个任务被阻塞的时候,可以先去执行一些其他可以执行的任务所以一个异步程序也会被叫做“无阻塞程序”。
那什么时候,我们需要考虑使用异步模型呢?
a) 有很多任务,经常总有一个任务可以继续执行
b) 这些任务中要执行很多I/O操作
c) 这些任务大多都是独立的
这些优势,非常适合一个非常繁忙的Web Server,每一个任务代表了一次接收请求和发送结果,而这些Client 请求大多都是独立的,所以一个Web Server的实现一个很好的异步模型的实现,这就是Twisted被叫做网络编程库的原因。
- Python使用Twisted总结 异步编程
- Python/Twisted 异步编程教程
- python twisted教程 一,异步编程
- Twisted异步编程
- Python使用Twisted总结 缓慢的诗
- Twisted与异步编程入门
- Python Twisted学习总结
- 使用twisted编写异步服务器
- 使用twisted编写异步服务器
- python 编程(关于twisted)
- twisted系列教材一异步编程
- 异步编程学习-Twisted学习文档【未完成】
- 使用twisted.python.log日志
- 使用twisted实现Python服务器
- 使用twisted实现Python客户端
- 使用Twisted进行socket编程
- 使用Twisted进行socket编程
- python实现网络编程 之Twisted框架
- 浅谈c++多态性
- STM32使用内部振荡器及其和外部晶体振荡器的区别
- C++ 重载 覆盖 隐藏 规则
- 黑马程序员-------类加载机制、ClassLoader(一)
- Android数据库秘籍摘抄之二《——》
- Python使用Twisted总结 异步编程
- iOS应用程序的主要框架
- 第8周项目2:加班费,要不要
- Android中自定义属性的使用
- array01
- 服务器于本地间进行复制粘贴
- IBM 技术文档:Spark, 快速数据分析的又一选择
- Redis经验谈
- CollectionView与CollectionViewSource