python - 多线程网络服务器与单线程

标签 python database multithreading webserver

我们有一个供内部使用的简单网络服务器,它只有一项职责:监听请求、读取请求并将数据推送到数据库中。数据库和网络服务器都位于同一台机器上。数据库是一个 mysql-db,服务器是一个运行单线程的 python 网络服务器(BaseHTTPServer.HTTPServer)。

问题是不能同时处理两个请求。问题是,它是否有助于使网络服务器成为多线程(使用 django、cheryypy 等)?直觉上,网络服务器仅执行 CPU 消耗任务,因此将其更改为多线程应该无济于事。这是正确的吗?

最佳答案

当您想一次处理多个请求时,拥有多个线程或进程确实会有所帮助(实际上这在实践中是必需的)。

这并不意味着这两个请求将得到更快的处理。拥有一个进程或线程池对 web 服务器性能非常有帮助,但在这种情况下并不是很明显(除非你有多个内核)。但是 MySQL 可以同时处理两个请求,所以如果您的网络服务器也可以做到这一点,那么您就可以摆脱只处理一个请求的问题。

但是,如果开始使用这样的服务器值得付出努力,只有您可以回答。 :) Django 在任何情况下肯定是矫枉过正,看看一些小型 WSGI 服务器。

关于python - 多线程网络服务器与单线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4458890/

相关文章:

java - Jetty,我的五个线程在哪里?

python - 使用 json.dumps() 时出现 UnicodeDecodeError

php - 上传文件

SQL Server 2008 查询删除在其他 3 个表中找不到值的所有行

java - 比较方法违反了它的一般契约!优先级队列错误

node.js - nodejs 服务器与 apache tomcat 服务器(App 服务器)有何不同?

python - 在 Python 解释器 : Explain behavior 中运行 Python 解释器

python - 对 NumPy 数组进行索引,忽略索引数组中的 NaN

python - Tensorflow 是否应该始终使用尽可能多的 Cuda 核心?

mysql - 如何提高sql查询中多个连接表的性能