twisted学习之reactor

reactor是twisted框架里面一个很重要的抽象,它为我们实现了循环,所以我们不用再去实现循环了。

reactor有如下特点:

1、reactor循环会一致运行下去,可以使用Ctrl+C或者相关的方法停止。但不会占用额外的CPU资源。

2、reactor模式是单线程的,也就是,当我们的callback()运行的时候,reactor循环停止,当twisted函数停止的时候,reactor循环继续。整个过程是一个单线程的。所以,我们必须合理的安排回调函数。

3、一段代码中只能有一个rector循环,reactor再等待事件,然后对事件做出反应,因此也称为事件循环。

#!/usr/bin/python

from twisted.internet import reactor

def Echo():
	print "the reactor is run"
	print ‘++++++++++++++++++==‘
	reactor.stop()

reactor.callWhenRunning(Echo)
print ‘hello‘
reactor.run()

可以看到,Echo()显示在hello之后,也就是说,在reactor.run()之后,再进入到回调函数中。

reactor应该具有监控I/O的本领,查看reactor源码

import sys
del sys.modules[‘twisted.internet.reactor‘]
from twisted.internet import selectreactor
selectreactor.install()

可一看到所使用的是select来处理文件I/O的,如过你要使用其他的方式,那么在导入reactor模块之前,必须先安装。比如说要使用poll。

from twisted.internet import pollreactor
pollreactor.install()
如果没有安装,则默认使用的是select。

  更多关于reactor的网址:

http://www.cnblogs.com/jimmychange/p/3508041.html

http://www.jb51.net/article/85052.htm

时间: 2024-10-04 17:40:43

twisted学习之reactor的相关文章

Python Twisted 学习系列5(转载stulife最棒的Twisted入门教程)

第五部分:由Twisted支持的诗歌客户端 作者:[email protected] http://krondo.com/?p=1522译者:杨晓伟(采用意译) 第五部分:由Twited支持的诗歌下载服务客户端 你可以从这里从头开始阅读这个系列 抽象地构建客户端 在第四部分中,我们构建了第一个使用Twisted的客户端.它确实能很好地工作,但仍有提高的空间. 首先是,这个客户端竟然有创建网络端口并接收端口处的数据这样枯燥的代码.Twisted理应为我们实现这些例程性功能,省得我们每次写一个新的程

Python Twisted 学习系列19(转载stulife最棒的Twisted入门教程)

第十九部分 改变之前的想法 简介 Twisted是一个正在进展的项目,它的开发者会定期添加新的特性并且扩展旧的特性. 随着Twisted 10.1.0发布,开发者向 Deferred 类添加了一个新的特性—— cancellation ——这正是我们今天要研究的. 异步编程将请求和响应解耦了,如此又带来一个新的可能性:在请求结果和返回结果之间,你可能决定不再需要这个结果了.考虑一下 :doc:`p14` 中的诗歌代理服务器.下面是这个如何工作的,至少对于诗歌的第一次请求: 一个对诗歌的请求来了.

Python Twisted 学习系列11(转载stulife最棒的Twisted入门教程)

第十一部分:改进诗歌下载服务器 作者:[email protected]http://krondo.com/?p=2048译者:杨晓伟(采用意译) 第十一部分:改进诗歌下载服务器 你可以从这里从头阅读这个系列. 诗歌下载服务器 到目前为止,我们已经学习了大量关于诗歌下载客户端的Twisted的知识,接下来,我们使用Twisted重新实现我们的服务器端.利益于Twisted的抽象机制,接下来你会发现我们前面已经几乎全部学习到这部分知识了.其实现源码在twisted-server-1/fastpoe

Python Twisted 学习系列3(转载stulife最棒的Twisted入门教程)

第三部分:初步认识Twisted 作者:[email protected]http://krondo.com/?p=1333译者:杨晓伟(采用意译) 第三部分:开始认识Twisted 可以从这里从头开始阅读这个系列. 用twisted的方式实现前面的内容 最终我们将使用twisted的方式来重新实现我们前面的异步模式客户端.不过,首先我们先稍微写点简单的twisted程序来认识一下twisted. 最最简单的twisted程序就是下面的代码,其在twisted-intro目录中的basic-tw

Python Twisted 学习系列6(转载stulife最棒的Twisted入门教程)

第六部分:抽象地利用Twisted 作者:[email protected]http://krondo.com/?p=1595译者:杨晓伟(采用意译) 第六部分:抽象地利用Twisted 你可以从这里从头开始阅读这个系列. 打造可以复用的诗歌下载客户端 我们在实现客户端上已经花了大量的工作.最新版本的(2.0)客户端使用了Transports,Protocols和Protocol Factories,即整个Twisted的网络框架.但仍有大的改进空间.2.0版本的客户端只能在命令行里下载诗歌.这

Python Twisted 学习系列4(转载stulife最棒的Twisted入门教程)

第四部分:由Twisted支持的诗歌客户端 作者:[email protected]://krondo.com/?p=1445译者:杨晓伟(采用意译) 第四部分:由Twisted支持的诗歌客户端 你可以在这里从头开始阅读这个系列. 第一个twisted支持的诗歌服务器 尽管Twisted大多数情况下用来写服务器代码,为了一开始尽量从简单处着手,我们首先从简单的客户端讲起. 让我们来试试使用Twisted的客户端.源码在twisted-client-1/get-poetry.py.首先像前面一样要

Python Twisted 学习系列8(转载stulife最棒的Twisted入门教程)

第八部分:使用Deferred的诗歌下载客户端 作者:[email protected]http://krondo.com/?p=1778译者:杨晓伟(采用意译) 第八部分:使用Deferred的诗歌下载客户端 可以从这里从头开始阅读这个系列. 客户端4.0 我们已经对deferreds有些理解了,现在我们可以使用它重写我们的客户端.你可以在twisted-client-4/get-poetry.py中看到它的实现. 这里的get_poetry已经再也不需要callback与errback参数了

Python Twisted 学习系列20(转载stulife最棒的Twisted入门教程)

第二十部分 轮子中的轮子: Twisted和Erlang 简介 在这个系列中,有一个事实我们还没有介绍,即混合同步的"普通Python"代码与异步Twisted代码不是一个简单的任务,因为在Twisted程序中阻滞不定时间将使异步模型的优势丧失殆尽. 如果你是初次接触异步编程,那么你得到的知识看起来有一些局限.你可以在Twisted框架内使用这些新技术,而不是在更广阔的一般Python代 码世界中.同时,当用Twisted工作时,你仅仅局限于那些专门为作为Twisted程序一部分所写的

Python Twisted 学习系列10(转载stulife最棒的Twisted入门教程)

第十部分:增强defer功能的客户端 作者:[email protected]http://krondo.com/?p=1956译者:杨晓伟(采用意译) 第十部分:增强defer功能的客户端 可以从这里从头开始阅读这个系列. 版本5.0 现在我们将要向诗歌下载客户端添加一些新的处理逻辑,包括在第九部分提到要添加的功能.不过,首先我要说明一点:我并不知道如何实现Byronification引擎.那超出了我的编程能力范围.取而代之的,我想实现一个简单的功能,即Cummingsifier.其只是将诗歌