python Web服务器如何克服GIL

Sen*_*abu 13 python django concurrency webserver

任何Web服务器都可能必须同时处理大量请求.由于python解释器实际上有GIL约束,如何实现并发?

他们是否使用多个流程并使用IPC进行状态共享?

Ign*_*ams 1

像平常一样。Web 服务主要是 I/O 绑定的,并且 GIL 在 I/O 操作期间释放。因此,要么使用线程而不进行任何特殊调整,要么使用事件循环(例如 Twisted)。

  • 这根本就是不真实的。并非所有工作负载都受 IO 限制。网络服务器 CPU 资源耗尽的情况是很常见的。这取决于正在运行的应用程序。 (3认同)
  • 我不是在谈论等待/接收请求。我正在谈论处理它们。例如,如果我收到一个请求,我可能需要做一些处理,比如检查各种 POST 或 GET 请求,这通常写成 python 代码。那么Python解释器如何同时执行这些代码块,因为它有GIL约束。 (2认同)