Consider a function f(*x)
which takes a lot of arguments *x
. Based on these arguments (objects), the function f
composes a rather complex object o
and returns it. o
implements __call__
, so o
itself serves as a function. Since the composition of o
is pretty time consuming and in my scenario there is no point in having multiple instances of o
based on the same arguments *x
, they are to be cached.
The question is now: How to efficiently compute a hash based on multiple arguments *x
? Currently I am using a python dictionary, and i concatenate the str()
representations of each x
to build each key. It works in my scenario, but it feels rather awkward. I need to call the resulting objects o
in a very high frequency, so I suspect the repeated call of str()
and the string concatenations waste a lot of computation time.