سهولة استخدام التخزين المؤقت للوظائف والأساليب.
لقد تم تصميم supercache كمصمم ديكور للعمل مع الوظائف والأساليب، لتوفير عمليات تنفيذ متكررة فورية تقريبًا باستخدام سطر إضافي واحد فقط من التعليمات البرمجية. إنه بمثابة واجهة لمحرك ذاكرة التخزين المؤقت، والذي يمكن أن يكون أي شيء بدءًا من التخزين المؤقت في الذاكرة وحتى استخدام Redis (شريطة أن يكون مشفرًا).
يرجى ملاحظة أن استخدام مصمم الديكور يضيف قدرًا صغيرًا من النفقات العامة لأنه تم تصميمه لتوفير الراحة والاستقرار على الأداء. من الممكن أن يؤدي التخزين المؤقت لوظيفة بسيطة جدًا إلى أداء أسوأ (يستغرق الأمر ثانية واحدة تقريبًا لكل 40000 عملية تنفيذ).
pip install supercache
from supercache import cache
# Basic cache
@ cache ()
def function ( x , y = None ):
return ( x , y )
# Set timeout
@ cache ( ttl = 60 )
def function ( x , y = None ):
return ( x , y )
# Ignore the y argument
@ cache ( ignore = [ 'y' ])
def function ( x , y = None ):
return ( x , y )
# Ignore anything after the first 2 arguments
@ cache ( keys = [ 0 , 1 ])
def function ( x , y = None , * args , ** kwargs ):
return ( x , y )
# Set up a custom cache engine
from supercache . engine import Memory
cache = Cache ( engine = Memory ( mode = Memory . FIFO , ttl = 600 , count = 100000 , size = 100000 ))
# Manually handle cache to reduce the decorator overhead
# This is in danger of collisions if the key is not unique
from supercache . exceptions import CacheError
def function ( x , y = None ):
key = 'function;{};{}' . format ( x , y )
try :
return cache . get ( key )
except CacheError :
value = ( x , y )
cache . put ( key , value )
return value
# Functions
@ cache ()
def function ():
pass
# Methods
class Class ( object ):
@ cache ()
def method ( self ):
pass
# Generators/iterators
@ cache ()
def generator ():
yield
# Lambdas
func = cache ()( lambda : None )
قم بتعيين معلمات الوظيفة التي سيتم استخدامها في إنشاء مفتاح ذاكرة التخزين المؤقت. سيتم استخدام جميع المعلمات المتاحة بشكل افتراضي.
يمكن أن تكون بتنسيق int
أو str
أو slice
(مفيدة لـ *args
) أو regex
(مفيدة لـ **kwargs
)
قم بتعيين المعلمات التي يجب تجاهلها عند إنشاء مفتاح ذاكرة التخزين المؤقت. سيؤدي هذا إلى تجاوز أي إعدادات متوفرة في keys
.
يمكن أن تكون هذه أيضًا بتنسيق int
أو str
أو slice
أو regex
تجاوز إعداد ttl للمحرك لتعيين عدد الثواني حتى يتم إبطال ذاكرة التخزين المؤقت.
إذا كانت الوظيفة التي تم تخزينها مؤقتًا عبارة عن مولد، فإن تعيين هذا على True
سيؤدي إلى تحويل الإخراج إلى tuple
عند استدعائه لأول مرة، بدلاً من إرجاع المكرر.
والسبب في ذلك هو أن التخزين المؤقت للمولد به الكثير من الحمل، والذي قد يصبح ملحوظًا للغاية عند استدعاء مولد بسيط آلاف المرات.
الاسم المستعار: cache[key]
اقرأ عنصرًا من ذاكرة التخزين المؤقت، أو قم بإظهار خطأ إذا لم يكن موجودًا.
الاسم المستعار: cache[key] = value
تعيين عنصر جديد من ذاكرة التخزين المؤقت.
الاسم المستعار: del cache[key]
حذف ذاكرة التخزين المؤقت لمفتاح أو وظيفة.
cache.delete()
: حذف جميع البيانات المخزنة مؤقتًا.cache.delete(key)
: حذف البيانات المخزنة مؤقتًا key
معين.cache.delete(func)
: حذف البيانات المخزنة مؤقتًا لكل تنفيذ func
.cache.delete(func, 1, b=2)
: حذف البيانات المخزنة مؤقتًا لـ func(1, b=2)
.قم بإرجاع عدد مرات قراءة ذاكرة التخزين المؤقت لمفتاح أو وظيفة.
cache.hits()
: عدد إجمالي عدد مرات الوصول إلى ذاكرة التخزين المؤقت.cache.hits(key)
: عدد الزيارات key
معين.cache.hits(func)
: عدد مرات الوصول إلى ذاكرة التخزين المؤقت لكل تنفيذ func
.cache.hits(func, 1, b=2)
: عدد مرات الوصول إلى ذاكرة التخزين المؤقت المخصصة لـ func(1, b=2)
.قم بإرجاع عدد المرات التي تم فيها إنشاء ذاكرة التخزين المؤقت لمفتاح أو وظيفة.
cache.misses()
: إجمالي عدد مرات فقدان ذاكرة التخزين المؤقت.cache.misses(key)
: عدد الأخطاء key
معين.cache.misses(func)
: عدد مرات فقدان ذاكرة التخزين المؤقت لكل تنفيذ func
.cache.misses(func, 1, b=2)
: عدد مرات فقدان ذاكرة التخزين المؤقت خصيصًا لـ func(1, b=2)
.احصل على ما إذا كانت ذاكرة التخزين المؤقت موجودة لمفتاح أو وظيفة.
cache.exists()
: في حالة وجود أي ذاكرة تخزين مؤقت.cache.exists(key)
: إذا كان key
موجودًا في ذاكرة التخزين المؤقت.cache.exists(func)
: في حالة وجود أي تنفيذ func
في ذاكرة التخزين المؤقت.cache.exists(func, 1, b=2)
: إذا كانت func(1, b=2)
موجودة في ذاكرة التخزين المؤقت.اضبط الوضع لمسح ذاكرة التخزين المؤقت. الخيارات هي FIFO (ما يدخل أولاً يخرج أولاً)، أو FILO (ما يدخل أولاً يخرج أولاً)، أو LRU (الأقل استخداماً مؤخراً)، أو MRU (الأكثر استخداماً مؤخراً) أو LFU (الأقل استخداماً).
قم بتعيين عدد الثواني حتى يتم إبطال ذاكرة التخزين المؤقت.
قم بتعيين الحد الأقصى لمقدار النتائج المخزنة مؤقتًا.
قم بتعيين الحد الأقصى لحجم ذاكرة التخزين المؤقت بالبايت. هذا حد بسيط، حيث سيتم تخصيص الذاكرة أولاً، ثم سيتم حذف ذاكرة التخزين المؤقت الأقدم حتى تعود إلى ما دون الحد.
سيتم دائمًا تخزين أحدث عملية تنفيذ في ذاكرة التخزين المؤقت، حتى إذا تم تعيين الحد الأقصى للحجم على أصغر من النتيجة.
classmethods
staticmethods
properties
مؤقتًا إلا إذا تم تنفيذ مصمم ذاكرة التخزين المؤقت أولاً