2017-03-17 6 views
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() 

答えて

2

試してみてください。

class add: 
    a = ClassA() 

    def POST(self): 
     return add.a.do_something() 

これはすなわち、一度だけ、それを初期化し、その代わりに、例えば、結合した1つのクラスの結合パラメータになります。

+0

動作しますが、 'self.a.do_something()'は 'add.a.do_something()'よりも優れていませんか?いずれにしても、初期化は1回だけ発生します。 – pbuck

+0

どちらが良いかは判断できません。インスタンスにではなく、クラスにバインドされているという点を強調したかっただけです。 (私が見ることができる利点の1つは、 'self'を使うと、関数を破壊することなくクラスの名前を変更できることです。) – Pit

関連する問題