import cProfile
import time


def profile(name, *args, **kwargs):
    profile_filename = '/tmp/{0}_{1}.prof'.format(name, time.time())
    profiler = cProfile.Profile()
    result = profiler.runcall(*args, **kwargs)
    profiler.dump_stats(profile_filename)
    print(profile_filename)
    return result


def profile_it(name):
    def _profile_it(f):
        def profile_wrapper(*a, **k):
            return profile(name, f, *a, **k)

        return profile_wrapper
    return _profile_it
