1

我想在具有 8 个内核的 AWS Linux 服务器上使用上述 3 个非阻塞服务器中的任何一个。在任何文档中都不清楚 SMP 是否在相应的 helloworld 或任何其他示例中实现。

例如,这个旋风 helloworld 没有提及核心或 SMP 或每个核心的线程。

import cyclone.web

class MainHandler(cyclone.web.RequestHandler):
    def get(self):
        self.write("Hello, world")


class Application(cyclone.web.Application):
    def __init__(self):
        cyclone.web.Application.__init__(self, [(r"/", MainHandler)],
                                         xheaders=False)

或者这个扭曲的:

from twisted.web import server, resource
from twisted.internet import reactor
class HelloResource(resource.Resource):
    isLeaf = True
    numberRequests = 0

    def render_GET(self, request):
        self.numberRequests += 1
        request.setHeader("content-type", "text/plain")
        return "I am request #" + str(self.numberRequests) + "\n"

reactor.listenTCP(8080, server.Site(HelloResource()))
reactor.run()

或者龙卷风...

import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world")

application = tornado.web.Application([
    (r"/", MainHandler),
])
if __name__ == "__main__":
    application.listen(8888)
    tornado.ioloop.IOLoop.instance().start()

事实上,很难确定它们是否是非阻塞的。

4

2 回答 2

1

Tornado 的 HTTPServer 支持多进程模式,使用bind(port)start(num_procs)方法。
http://www.tornadoweb.org/en/stable/tcpserver.html#tornado.tcpserver.TCPServer.start

于 2014-01-08T01:03:34.110 回答
0

CPython 进程使用全局解释器锁,因此如果只运行一个 Python 进程,则无法真正利用硬件中可用的多个线程。

于 2014-01-08T00:23:25.800 回答