【问题标题】:How to use Tornado with a thread pool?如何在线程池中使用 Tornado?
【发布时间】:2017-04-30 14:23:19
【问题描述】:

我来自 Java 背景,对 Python 完全陌生。

我需要编写一个简单的 Web 服务器来处理多个并发请求。请求处理主要受 CPU 限制,处理单个请求可能需要 100 - 1000 毫秒。服务器将在多核机器上运行。

有人建议我将Tornado 与线程池一起使用。你有什么例子吗?

【问题讨论】:

  • 感谢您的链接。但是,我可能需要多个 进程 而不是线程,正如答案中所解释的那样。

标签: python threadpool tornado


【解决方案1】:

如果单个请求的处理主要受 CPU 限制,那么线程池将无济于事。 Python 的全局解释器锁 (GIL) 可防止多个线程在任何一个 Python 进程中运行 Python。相反,为每个核心启动一个 Tornado 进程。

Follow this example from the Tornado docs:

server = HTTPServer(app)
server.bind(8888)
server.start(0)  # Forks multiple sub-processes
IOLoop.current().start()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-25
    • 2015-03-28
    • 1970-01-01
    • 2015-10-18
    • 1970-01-01
    • 2017-12-05
    • 1970-01-01
    相关资源
    最近更新 更多