Проверьте, как долго работает функция Python - PullRequest
1 голос
/ 12 апреля 2020

Допустим, у меня есть функция:

def f(x):
    for i in range(x):
        print(i**2)
    return x

Я хочу реализовать это:


print(f(99999999))

if f.runTime() > 0.1:
    #DoSomething()

Так что она будет вызывать функцию, но будет делать DoSomething (), если f ( ) занимает больше 0,1 с (даже до того, как f () вернется!)

Так что нет, модуль time - это не то, что я ищу.

1 Ответ

2 голосов
/ 12 апреля 2020

Как предположили некоторые люди, хороший вариант здесь использует потоки, вы можете проверить документацию или этот пример .

Если вы не хотите туда заходить, и проверка вашего времени не должна быть очень точной, вы можете сделать это так:

import time
def f(x):
    start_time = time.time()
    for i in range(x):
        if time.time() - start_time < TIME_LIMIT:
            print(i**2)
        else:
            raise Exception('execution time exceded')
    return x

try:
   print(f(99999999))
except Exception as error:
   print(error)

это худшее решение, потому что оно будет терять некоторое время выполнения при проверке в каждом итерации, но вы можете попробовать, если это работает для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...