0
web.pyを使用して簡単なWebサービスをホストしています。 Webサービスは、バックエンド(ClassA内)の分析アプリケーションを実行します。 web.pyの初期化中に、すべてのデータをメモリにプリロードする(つまり、Webサーバーの起動時にa = ClassA()を1回だけ呼び出す)し、ユーザーがWebリクエストを送信すると、Webサーバーあらかじめ計算された結果(つまりa.do_somethingを返す)を返すだけです。webpyで一度だけPythonクラスを初期化する
次のコードは、HTTP POSTリクエストを受信するたびに、クラス「追加」の()を実行しているようです。初期化の段階がかなり長くかかるので、これは時間の無駄です。 ClassAを一度しか初期化することは可能ですか?
import web
from aclass import ClassA
urls = (
'/add', 'add'
)
class add:
def __init__(self):
a = ClassA()
def POST(self):
return a.do_something()
if __name__ == "__main__":
app = web.application(urls, globals())
app.run()
動作しますが、 'self.a.do_something()'は 'add.a.do_something()'よりも優れていませんか?いずれにしても、初期化は1回だけ発生します。 – pbuck
どちらが良いかは判断できません。インスタンスにではなく、クラスにバインドされているという点を強調したかっただけです。 (私が見ることができる利点の1つは、 'self'を使うと、関数を破壊することなくクラスの名前を変更できることです。) – Pit