2011-08-08 42 views
0

我使用的是django1.3。在CentOS5中。我的Python版本是2.6,並使用numpy 1.6.1 我在views.py中使用了一個計算迴歸線的函數。一個示例代碼:加載網頁時使用polyval,使用numpy polyfit的問題

from numpy import * 
.... 
def test_func(request): 
    n=50 
    t=linspace(-5,5,n) 
    #parameters 
    a=0.8; b=-4 
    x=polyval([a,b],t) 
    #add some noise 
    xn=x+randn(n) 

    #Linear regressison -polyfit - polyfit can be used other orders polys 
    (ar,br)=polyfit(t,xn,1) 
    xr=polyval([ar,br],t) 

return ... 

在瀏覽器中,如果我打電話給該頁面,則無法加載。但它在django自帶的默認開發服務器的窗口中工作正常。 任何人都可以告訴代碼中是否有任何錯誤。或者我想念什麼? 謝謝先進。

+1

<集中精力> ...不,我的心理異象不起作用,我似乎無法看到您的錯誤消息。你介意在這裏發佈嗎? –

+1

如果這取決於服務器,它不是一個numpy問題。 – rocksportrocker

+0

polyval,polyfit可與服務器計算機中的python命令行(在本例中爲centos)一起使用。但是當我嘗試加載網頁時,瀏覽器只是繼續加載頁面,沒有其他事情發生。它不抱怨任何錯誤,所以我不知道在這種情況下要做什麼。 – user777177

回答

0

我目前正在研究類似的問題(Gentoo的,Python 2.7版,NumPy的1.6.0),和它似乎只在WSGI,下面numpy的代碼最終阻止:

eps = np.finfo(float).eps 

help page for finfo說:

對於NumPy的開發人員:不要在模塊級別實例化它。這些參數的初始計算是昂貴的,並且對進口時間產生負面影響。這些對象被緩存,因此在你的函數內重複調用finfo()不是問題。

不知道這是怎麼回事,但降級到Numpy 1.5.1似乎解決了這個問題。

+0

當你說WSGI你是指Apache/mod_wsgi?如果是這樣,請閱讀http://code.google.com/p/modwsgi/wiki/ApplicationIssues#Python_Simplified_GIL_State_API並嘗試覆蓋解釋器。 –

+0

感謝您找出問題。我也認爲這可能是迄今爲止的一個原因,但我沒有發現任何關於它的提及。我嘗試了我的問題,而沒有使用這些功能polyval或polyfit這可能是一個臨時解決方案。 – user777177

1

您需要將WSGIApplicationGroup指令添加到您的httpd.conf文件中。

<Directory /www/django/apache> 
    WSGIApplicationGroup %{GLOBAL} 
    Order deny,allow 
    Allow from all 
</Directory>