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

原文地址:https://www.cnblogs.com/victorwu/p/5762740.html