Veritabanından bir istek/yanıt döngüsü sırasında değişmeyecek bir değer için bir bellek içi iş parçacığı önbelleği kullanmak istiyorum, ancak yüzlerce (potansiyel olarak binlerce) kez çağrılır. Benim sınırlı anlayışım, bir "global"/module değişkeni kullanmak, bu tip bir önbellek uygulamak için bir yoldur.Python "global" (modül) değişkenleri yerel olarak mı işlenir?
örn:
#somefile.py
foo = None
def get_foo(request):
global foo
if not foo:
foo = get_foo_from_db(request.blah)
return foo
ben "küresel" bu tür kullanarak Python evreli olup olmadığını merak ediyorum ve bu nedenle ben get_foo_from_db() istek başına sadece bir kere çağrılan alacak o rahat olabilir django'da/yanıt döngüsü (runserver veya gunicorn + gevent kullanarak). Anlayışım doğru mu? Bu şey, değeri depolamak için memcached'i kullanmanın bile bir darboğaz olacağına (konuştuğumuz şekilde profil oluşturduğuma) yetinir.
Anlam ifade eder. Http://stackoverflow.com/questions/15365780/how-to-implement-thread-safe-in-memory-cache-of-value-in-django adresine buradan ulaşabilirsiniz. –