twisted学习(reactor)

心不动则不痛 提交于 2020-02-28 12:46:10

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。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!