2015-05-09 55 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 –

相關問題