2

我有一个 django 应用程序,它严重依赖于线程,无论我添加多少进程或线程到WSGIDaemonProcess.

我在那里找不到是/否的答案,我想知道。会不会是 mod_wsgi 对每个请求都使用相同的解释器,所以由于 GIL 限制,我在瓶颈中运行?

如果是这样,您会推荐其他可以帮助我解决此限制的方法吗?

4

2 回答 2

0

对于典型的配置,是的,所有请求都将在同一个子解释器中处理。

如果在同一进程的不同子解释器中,您仍然受到 GIL 的影响。

发布您的实际 mod_wsgi 配置以确认您已正确设置。

考虑尝试 New Relic 以找出真正的瓶颈所在。

观看我在 PyCon US 2012 上关于寻找瓶颈的演讲

于 2012-09-29T06:54:57.220 回答
-1

简短的回答:

不。

长答案:

这种充分利用处理器的能力,即使在使用多线程时,也因为 Apache 使用多个进程来处理请求而不仅仅是一个进程而得到进一步增强。因此,即使在特定进程中存在对 GIL 的争用,它也不会阻止其他进程能够运行,因为 GIL 仅在进程本地并且不会跨进程扩展。

引用:https ://code.google.com/p/modwsgi/wiki/ProcessesAndThreading

您没有为任何人提供足够的信息来推荐如何提高性能,但是如果您实际上已经用 Python 编写了一个线程繁重的程序,那是您的第一个错误。与其在 CPython 上运行程序,不如尝试 Jython 或 IronPython。但是它不适用于 mod_wsgi,所以我们真的需要更多细节来理解你想要做什么......

于 2013-10-07T17:09:35.967 回答