我希望提供一个网络服务,让用户可以测试在Linux机器上运行的Python编写的算法的性能。基本上,我想做的是,在非常简单的PHP处理程序(例如start_algo.php)中接受来自浏览器的请求,并通过system()或popen()(类似于exec("python algo.py"))在php代码中发出运行Python脚本的新进程。我认为这一部分是可行的。
问题在于,由于它是一个Web服务,肯定必须同时为多个用户提供服务,但我对CPython实现的全局解释器锁GIL感到困惑,详情请看http://wiki.python.org/moin/GlobalInterpreterLock。这是否意味着,如果现在有3个用户正在运行算法(这意味着有3个独立的进程,如果我错了,请纠正我),在特定时刻,只有一个用户正在被Python解释器服务,而其他2个则在等待他们的轮次?
提前致谢
Ted
问题在于,由于它是一个Web服务,肯定必须同时为多个用户提供服务,但我对CPython实现的全局解释器锁GIL感到困惑,详情请看http://wiki.python.org/moin/GlobalInterpreterLock。这是否意味着,如果现在有3个用户正在运行算法(这意味着有3个独立的进程,如果我错了,请纠正我),在特定时刻,只有一个用户正在被Python解释器服务,而其他2个则在等待他们的轮次?
提前致谢
Ted
mod_wsgi
?如果是,那么并发请求在Python之外的层面上得到很好的处理。如果不是,请解释为什么不使用Apache(或nginx)和mod_wsgi。 - S.Lott