proxy pattern nowlet' see what effect memoization would have on our simple example case import time def fib( )if return return fib( fib( if __name__ ="__main__"start_time time time(fib_sequence [fib(xfor in range( , )end_time time time(print"calculating the list of {fibonacci numbers took {secondsformatlen(fib_sequence)end_time start_time let this run for some timesee the amount of time elapsed just to calculate fibonacci numbers from to on my computeri got the following resultcalculating the list of fibonacci numbers took seconds some new systems laugh at mere fibonacci numbers if you are in that situationyou could try increasing the numbers in orders of magnitude-- --until you hit upon number that shows load without taking forever to complete use this number throughout the rest of the if we were to cache the results of each callhow would that affect the calculationlet' implement the same function as beforebut this time we will make use of an extra dictionary to keep track of requests we have calculated before