测试tornado的多进程性能tornado.process

随后测试了下tornado的 tornado.process模块,  结果性能方面不咋地。  他的实现原理也很简单,就是主进程实例化listen fd,然后fork子进程,这样子进程继承了父进程的listen fd .  当一个新连接过来的时候,多个子进程如果都在accept,那么会出现惊群操作,当然最后只有一个进程accept拿到数据。

每个子进程有单独的epoll池里,不仅要监控listen fd,而且要监控 已经建连的连接。

另外,tornado多进程的性能咋样?  不怎么样…. 也就用用…

 

#!/usr/bin/env python

# -*- coding:utf-8 -*-

import os

import time

 

import tornado.web

import tornado.httpserver

import tornado.ioloop

import tornado.netutil

import tornado.process

from tornado.options import define,options

 

 

define("port",default=8001, help="run on the given port", type=int)

class LongHandler(tornado.web.RequestHandler):

 

    def get(self):

        time.sleep(3)

        self.write(str(os.getpid()))

                                                                    

 

if __name__ == "__main__":

    tornado.options.parse_command_line()

    app = tornado.web.Application(([r'/', LongHandler], ))

    sockets = tornado.netutil.bind_sockets(8090)

    tornado.process.fork_processes(100)

    server = tornado.httpserver.HTTPServer(app)

#    server.listen(options.port)

    server.add_sockets(sockets)

    tornado.ioloop.IOLoop.instance().start()

 

 

转自:http://xiaorui.cc/2014/05/11/%E6%B5%8B%E8%AF%95tornado%E7%9A%84%E5%A4%9A%E8%BF%9B%E7%A8%8B%E6%80%A7%E8%83%BDtornado-process/

你可能感兴趣的:(python)