How to make Ruby or Python web sites to use multiple cores?尽管Python和Ruby每个解释器线程都有一个内核线程,但是它们具有全局解释器锁(GIL),该锁用于保护潜在的共享数据结构,因此这会阻止多处理器执行。 即使用C或C ++编写的语言中的部分可以是自由线程的,但使用纯解释代码是不可能的,除非您使用多个进程。 实现此目标的最佳方法是什么? 使用FastCGI? 创建集群或虚拟服务器场? 使用它们的Java对等物,JRuby和Jython? 使用rails的"标准"方法是运行"包"的Mongrel实例(即:rails应用程序的4个副本),然后使用apache或nginx或其他软件坐在它们前面并采取行动作为负载均衡器。 这可能是通过其他ruby框架(例如merb等)完成的,但是我还没有亲自使用它们。 操作系统将负责在自己的CPU上运行每个杂种。 如果您安装mod_rails aka phusion passenger,它也会为您启动和停止rails进程的多个副本,因此最终将以类似的方式将负载分散到多个CPU /内核上。 我不确定要解决哪个问题,但是如果您使用mod_python apache通过apache prefork MPM部署python / django应用程序,则会启动多个工作进程来处理不同的请求。 如果一个请求需要那么多资源,那么您想使用多个内核,请看pyprocessing。但是我不认为这是明智的。
在Python和Ruby中,只能使用多个内核,以产生新的(重量级)进程。
使用在单独的解释器中运行每个响应的接口,例如用于Python的
编辑:显然,
对于Python,PyProcessing项目使您可以像使用线程一样使用进程进行编程。它作为 |