0 による除算になる可能性のある Python コードがいくつかありますが、Python (3.2) インタープリターで正しく実行されます。ただし、mod_wsgi を使用して実行しようとすると、エラーが発生せずに単にハングし、要求が処理されません。
インタプリタの警告 (出力は正しい):pathwayAnalysis.py:30: RuntimeWarning: divide by zero encountered in double_scalars
mod_wsgi を使用してこれを実行する正しい方法を知っている人はいますか?
コードは以下です。difference と size はどちらも、長さ 2 の numpy float 配列です。float in のどちらかdifference
が 0 の場合があります (両方ではない)。これの前に追加difference += 0.0001
すると正しく実行されますが、出力が正確ではないため、良い解決策ではありません:
if abs(difference[0] / difference[1]) > (size[0] / size[1]):
ratio = abs(size[0] / difference[0])
else: ratio = abs(size[1] / difference[1])
for i in range(len(base)):
result.append(base[i] + difference[i] * ratio/2)
return array(result)
以下を実行しても機能しません。
try:
cond = abs(difference[0] / difference[1]) > (size[0] / size[1])
except RuntimeWarning:
cond = True
# hangs before this point
if cond:
'''as above'''
いくつかのテスト コード (いずれかのdifference
定義を使用):
def application(environ, start_response):
from numpy import array
size = array([10., 10.])
difference = array([115., 0.]) # hangs
difference = array([115., 10.]) # returns page with text 'Yes.'
if abs(difference[0]/difference[1]) > (size[0]/size[1]):
output = 'Yes.'
else:
output = 'No.'
status = '200 OK'
response_headers = [('Content-type', 'text/plain'),\
('Content-Length', str(len(output)))]
start_response(status, response_headers)
return [output]