シン・レンタルサーバーにてPython(CGI)でnumpyをimportすると「500 Internal Server Error」

Python,レンタルサーバーchat_bubble0

タイトルにはnumpyと入れていますが、エラー確認時にimportしていたのはpandasです。エラーの原因が依存関係にあるnumpyだったのでタイトルにはnumpyと入れています。

SSHやcronでは特に問題なくpandasを使うスクリプトが動作したのですが、CGIで使おうとすると「500 Internal Server Error」が発生しました。

ググってみるとエックスサーバーでも同様の問題があるようで、エラーの原因となるimportの前に以下を追記すると良いとのこと。

import os
os.environ["OPENBLAS_NUM_THREADS"] = "1"

参考にしたサイト

試してみると、シン・レンタルサーバーでもこれでエラーが解消しました。

この環境変数はOpenBLASが扱うスレッド数を設定するもので、1、つまりシングルスレッドで動作するようにします。エックスサーバーやシン・レンタルサーバーでこの設定が必要になるハッキリとした理由は分かりませんが、OpenBLASのFAQによるとマルチスレッドで動作しているアプリ上でOpenBLASをマルチスレッドで動作させようとすると競合してしまうらしく、そのような場合にこの設定が必要になるようです。

藤乃音りょう