Skip to content

Instantly share code, notes, and snippets.

@qlawmarq
Created October 26, 2022 01:28
Show Gist options
  • Save qlawmarq/0ea6c6368e7c1d6b90a62e690cd084ed to your computer and use it in GitHub Desktop.
Save qlawmarq/0ea6c6368e7c1d6b90a62e690cd084ed to your computer and use it in GitHub Desktop.
Memorize function for Python
import os
from uuid import uuid4
##### Memorize function for performance ###################
#################################################################
def get_id_tuple(f, args, kwargs, mark=object()):
l = [id(f)]
for arg in args:
l.append(id(arg))
l.append(id(mark))
for k, v in kwargs:
l.append(k)
l.append(id(v))
return tuple(l)
_memoized = {}
def memoize(f):
def memoized(*args, **kwargs):
key = get_id_tuple(f, args, kwargs)
if key not in _memoized:
_memoized[key] = f(*args, **kwargs)
return _memoized[key]
return memoized
##### Test function #############################################
#################################################################
@memoize
def test_fucn():
print('Test run')
token = str(uuid4())
print(token)
return token
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment