mod_wsgi是否在单个python解释器中运行?

时间:2012-09-27 17:00:24

标签: multithreading mod-wsgi gil

我有一个django应用程序,它严重依赖于线程,无论我添加到WSGIDaemonProcess多少进程或线程,我都注意到没有性能增加。

我在那里找不到是/否答案,我在想。难道mod_wsgi对每个请求都使用相同的解释器,所以我因为GIL限制而陷入瓶颈?

如果是这样,你会推荐一些其他方法来帮助我解决这个限制吗?

2 个答案:

答案 0 :(得分:0)

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

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

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

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

观看我的PyCon US 2012关于发现瓶颈的演讲

答案 1 :(得分:-1)

简短回答:

没有

答案很长:

  

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

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

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