2015-05-09 45 views
2

我有一个python脚本。可以说http://domain.com/hello.py,它只打印“你好,世界!”。我可以预编译一个python脚本吗?

是否可以预编译这个Python文件?

我每秒获得约300个请求,并且编译的开销也很高。在Java中,服务器可以轻松处理,但为了计算,Python工作起来要容易得多。

+2

Python在导入时将'.py'文件编译为'.pyc',这意味着它只能执行一次。是什么让你认为这是“编译的开销”,这会让你的应用程序变慢? – univerio

+0

@univerio,我不输入任何东西,我只有一行“print'hello world!”我试着用Jmeter测试负载,它每分钟只能处理约2000个请求。我的Java servlet可以处理大约70k每分钟的数据查询计算等。还有什么可能是这个原因? – user3605780

+2

这更可能是你试图将python文件作为正常cgi服务的工件....尝试至少fcgi ...但你真的应该使用nginx + gnuicorn或某种缓存...... apache + mod_wsgi也会工作......服务他们作为正常CGI的问题(也许FCGI ...林不知道)是它不得不推迟一个全新的解释器环境为每个请求 –

回答

5

的问题不在于你需要“预编译”巨蟒,问题是,你正在尝试使用正常的CGI脚本的东西来执行Python脚本...

真正的答案是使用一个更好的Web后台不是简单的CGI来运行Python

我建议按出场顺序如下

1. nginx + gnunicorn 
    2. apache2 + mod-wsgi 
    3. something else 
    4. anything else 
    ... 
n-1. fcgi 
    n. cgi 

我知道这心不是一个真正的答案,完全是基于舆论

0

Python代码在CPython(标准Python)解释器首次运行时自动编译。 You can pre-compile it if you want to optimize the first request,但通常没有必要。除此之外,您需要将您的Python代码转换为Python C/cython模块。有some tools可帮助您将Python代码转换为Python模块,如果这是您想要的路线。

还有被称为SciPy一个Python模块,通常用于科学计算与数据科学应用程序,它提供了一个名为Weave工具,它允许您为嵌入式C/C++代码到Python代码允许代码的某些关键性能部分使用编译的C/C++代码运行。

+4

我不认为这真的解决OP问题(这是可能在标题和OP中错误地陈述了......)“预编译”python不是有助于OP的实际解决方案...并且我不认为你可以使用任意数量的scipy真正优化'print'hello world'或numpy –

相关问题