初始twisted(一)
1.与同步模型的优势:
1.有大量的任务,一个时刻内至少有一个任务要运行
2.任务执行大量的I/O,同步模型会因为任务阻塞而浪费大量时间
3.任务之间相互独立,任务内部交互少.
2.与同步模式客户端的差别:
1.异步模式会一次性与全部服务器完成连接,而不是同步模式那样一次连接一个.
2.用来通信的socket方法是非阻塞的,通过setblocking()实现.
3.select模块中的select方法用来识别监视的socket是否有完成数据接收,如果没有,则阻塞.
4.当从服务器读取数据时,会尽量多的从socket读取知道他阻塞为止,然后读下一个socket
3.异步模式:
异步模式客户端需要一个循环体来监视所有sokect,利用这个循环体来等待事件发生:reactor:
wait for events----->handle events------>wait for events
4.关于twisted基础编程的几点:
1.twisted的reactor只有通过reactor.run()来启动
2.reactor循环运行在主进程中.
3.一旦启动,就会一直运行下去.
4.reactor循环不消耗cpu
5.reacotr不需要创建,引入即可.
5.Hello world
from twisted.internet import reactor
def hello():
print 'Hello world!'
print 'Hello twisted!'
reactor.callWhenRunning(hello) #hello 在reactor启动后被调用
print 'Starting reactor!'
reactor.run()
6.第二个程序stop
class CountDown(object):
counter = 5
def count(self):
from twisted.internet import reactor
if self.counter == 0:
reactor.stop()
else:
print self.counter,'............'
self.counter -=1
reactor.callLater(1,self.count) #使用callLater注册一个回调函数,arg2为回调函数,arg1为在几秒后执行该回调函数.
from twisted.internet import reactor
reactor.callWhenRunning(CountDown().count)
print 'Start!'
reactor.run()
print 'Stop!'
Output:
Start!
5......
4......
3......
2......
1......
Stop!
初始twisted(一)的更多相关文章
- Twisted使用和scrapy源码剖析
1.Twisted是用Python实现的基于事件驱动的网络引擎框架. 事件驱动编程是一种编程范式,这里程序的执行流由外部事件来决定.它的特点是包含一个事件循环,当外部事件发生时使用回调机制来触发相应的 ...
- Twisted框架
Twisted是一个事件驱动型的网络模型.时间驱动模型编程是一种范式,这里程序的执行流由外部决定.特点是:包含一个事件循环,当外部事件发生时,使用回调机制来触发相应的处理. 线程模式: 1.单线程同步 ...
- 笔记-twisted
笔记-twisted 1. 简介 Twisted is an event-driven networking engine written in Python and licensed un ...
- Python面向对象初始(三大特征,多态,继承,封装)
Python面向对象的初始 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优点是:极大的降低了写程序的 ...
- 2DToolkit官方文档中文版打地鼠教程(一):初始设置
这是2DToolkit官方文档中 Whack a Mole 打地鼠教程的译文,为了减少文中过多重复操作的翻译,以及一些无必要的句子,这里我假设你有Unity的基础知识(例如了解如何新建Sprite等) ...
- CSharpGL(38)带初始数据创建Vertex Buffer Object的情形汇总
CSharpGL(38)带初始数据创建Vertex Buffer Object的情形汇总 开始 总的来说,OpenGL应用开发者会遇到为如下三种数据创建Vertex Buffer Object的情形: ...
- Mina、Netty、Twisted一起学(八):HTTP服务器
HTTP协议应该是目前使用最多的应用层协议了,用浏览器打开一个网站就是使用HTTP协议进行数据传输. HTTP协议也是基于TCP协议,所以也有服务器和客户端.HTTP客户端一般是浏览器,当然还有可能是 ...
- ArrayList、Vector、HashMap、HashSet的默认初始容量、加载因子、扩容增量
当底层实现涉及到扩容时,容器或重新分配一段更大的连续内存(如果是离散分配则不需要重新分配,离散分配都是插入新元素时动态分配内存),要将容器原来的数据全部复制到新的内存上,这无疑使效率大大降低. 加载因 ...
- Twisted随笔
学习了socket后决定尝试使用框架,目标锁定了Twisted. 什么是Twisted? twisted是一个用python语言写的事件驱动的网络框架,他支持很多种协议,包括UDP,TCP,TLS和其 ...
随机推荐
- TCP/IP详解学习笔记(14)-- TCP可靠传输的实现
1.概述 为方便描述可靠传输原理,假定数据传输只在一个方向上进行,即A发送数据,B给出确认 2.以字节为单位的滑动窗口 TCP的滑动窗口是以字节为单位的.为了便于说明,字节编号取得 ...
- c#中如何做日期的三元判断(日期不为空赋值)
<dx:ASPxDateEdit runat="server" ID="edTab4_protocoldate" Width="100%&quo ...
- 使用UI Automation实现自动化测试 --微软提供的控件Pattern
微软提供的控件Pattern System.Windows.Automation 命名空间 System.Windows.Automation.BasePattern 为控件模式类提供基实现 Syst ...
- AX 最顶部工作区间窗口文本修改
修改Class\Info\method\workspaceWindowCreated: void workspaceWindowCreated(int _hWnd) { // Put workspac ...
- asp.net ashx 一般处理程序 使用async await异步直接 copy可用哦
以前一直很懒 碰到ashx要用await异步就绕开 用aspx 或者mvc异步控制器 这次公司需要 我查了国内的文章基本都不能简单copy来处理一堆错关键的过程中函数BeginProcess ...
- js 全选全不选
checkAll: function () { //全选 if ($("#chk_SelectAll").is(":checked")) { ...
- Centos6.5系统初学者基本系统配置1
作为一个初步接触linux-Centos的菜鸟来说,Centos在基本软件安装是一件比较令人头疼的事情,下面我将我初步使用linux的一些问题进行了汇总和记录,希望对大家有所帮助,这些东西也是在网友的 ...
- 《深入剖析Tomcat》读书笔记(二)
三.容器Container Container 是容器的父接口,所有子容器都必须实现这个接口.Container 容器的设计用的是典型的责任链的设计模式,它有四个子容器组件构成,分别是:Engine. ...
- ping通网关 ping不能外网 DNS无法解析
###ping通网关 ping不能外网 DNS无法解析 客户上不了网 DNS解析不了 首先登陆机器 先查看IP 然后看dns是否正常 然后测试ping网关 ping外网 nslookup ...
- 使用C#中JavaScriptSerializer类将对象转换为Json格式数据
将对象转换为json格式字符串: private JavaScriptSerializer serializer = new JavaScriptSerializer(); protected voi ...