python функция для измерения времени в общем c коде и записи его в файл журнала - PullRequest
0 голосов
/ 05 августа 2020

Каждый раз, когда я хочу записать в журнал, сколько времени потребуется для запуска некоторого кода, я оборачиваю код следующим образом *

Я знаю, что такое% timeit, но я думаю, что здесь он неприменим, потому что я хочу регистрировать и потому, что я не хочу запускать его N раз, чтобы получить дисперсию или что-то в этом роде.

Я думал, что должен определить функцию

def timing ( <MYCODE> ):
    logger.info('Running   <MYCODE>' )
    start_time = time.time()
    <MYCODE>
    logger.info("--- %s seconds ---" % (time.time() - start_time))

, но не уверен, что это хорошая идея. Во-первых, потому что похоже на проблему, которую многие люди уже встретили и решили лучше, чем мое 5-минутное решение, во-вторых, потому что мне нужно обрабатывать возврат этой функции ... что она возвращает? и как передать весь код, который я хочу запустить? Я очень запутался, похоже, кое-кто из декораторов уже написал для этого ...

1 Ответ

0 голосов
/ 24 августа 2020
import time
import inspect

def timed(f:callable):
    start = time.time()
    ret = f()
    elapsed = 1000*(time.time() - start)
    source_code=inspect.getsource(f).strip('\n') 
    logger.info(source_code+":  "+str(elapsed)+" seconds")
    return ret

может использоваться

a = timed(lambda: np.sin(np.pi))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...