Option A
, = 500 . .
SELECT * FROM expensive_func_results WHERE func_name = 'calc_regress' AND arg1 = ind_key AND arg2 = dep_key and arg3 = count ..
, . , , /; .
B
/ func_name, arguments, result, "arguments" kwargs , . kwargs dict, , - > /, . . , SELECT * FROM expensive_func_results WHERE func_name = 'calc_regress' AND arguments = 'str(kwargs_dict)', str(kwargs_dict) - , . inspect.getargspec, ( inspect.getcallargs), .
, LIKE.
C
: func_calls func_name, args_combo_id, arg_name_idx, arg_value. , args. func_results func_name, args_combo_id, result. func_name func_id.
args , . , , , . 3 , 10. arg_name_idx - , kwargs + args. , calc_regress(ind_key=1, dep_key=2, count=30) calc_regress(1, 2, 30) ( calc_regress(1, 2) count < - , ); args_combo_id , , , . , .
[] PS: , func_name , . ; deco.__name__ = func.__name__ ..
PPS: , , , __str__ - / arg.
arg db, __str__ __repr__ , __repr__ ( ):
Python, ( ).