That's a cool project, nice job!<p>The pulse looks useful for functions that take seconds, if it takes minutes something like tqdm [1] that gives an estimate on how long it takes seems more appropriate.<p>And your cache decorator is also available in the standard library as functools.lru_cache. [2] That one is implemented in C so it should be faster. [3]<p>[1]: <a href="https://github.com/tqdm/tqdm" rel="nofollow">https://github.com/tqdm/tqdm</a><p>[2]: <a href="https://docs.python.org/3/library/functools.html#functools.lru_cache" rel="nofollow">https://docs.python.org/3/library/functools.html#functools.l...</a><p>[3]: <a href="https://docs.python.org/3/whatsnew/3.5.html#functools" rel="nofollow">https://docs.python.org/3/whatsnew/3.5.html#functools</a>