私は、要求/応答サイクル中に変更されないが、数百(潜在的には何千もの)回呼び出されるデータベースからの値に対して、メモリ内のスレッドローカルキャッシュを使用したいと考えています。私の限られた理解は、 "グローバル" /モジュール変数を使用することは、このタイプのキャッシュを実装する1つの方法です。Pythonの "グローバル"(モジュール)変数はスレッドローカルですか?
例:
#somefile.py
foo = None
def get_foo(request):
global foo
if not foo:
foo = get_foo_from_db(request.blah)
return foo
私は「グローバル」のこのタイプを使用してPythonでスレッドセーフであるかどうかを思ったんだけど、それはので、私はget_foo_from_db()はリクエストごとに1回だけ呼び出されますことを快適にすることができます/ djangoの応答サイクル(runserverまたはgunicorn + geventを使用)。私の理解は正しいのですか?このことは、値を格納するためにmemcachedを使用してもボトルネックになるほど十分に呼び出されます(私が話すようにプロファイリングしています)。
意味があります。ここに質問をフォローアップ:http://stackoverflow.com/questions/15365780/how-to-implement-thread-safe-in-memory-cache-of-value-in-django –