zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Apache CXF入门
    C++中关于类型转换的问题讨论
    makefile实例(3)-多个文件实例优化
    makefile实例(2)-多个文件实例
    makefile实例(1)-helloworld
    【原创】Linux下编译链接中常见问题总结
    tcpdump命令
    共享内存基础
    关于TCP/UDP缓存
    TCP/UDP常见问题小结
  • 原文地址:https://www.cnblogs.com/victorwu/p/5762740.html
Copyright © 2011-2022 走看看