Как узнать, сколько времени займет выполнение до запуска?

1

Мы можем измерить продолжительность выполнения сценария. Как и в этом вопросе: Как получить время выполнения программы Python?

Но я хочу найти время, когда требуется выполнить код перед исполнением.

Пример 1:

При выполнении сценария первое, что нужно напечатать, это что-то вроде этого:

this function will take 1 min 40 seconds to be executed

Пример 2:

Процент от того, сколько выполнения сделано до сих пор. Например, через минуту процент составляет: 60% и он продолжает расти, пока не достигнет 100%.

Теги:
python-3.x
python-2.7
time

2 ответа

0
Лучший ответ

Учтите, что когда вы выполняете функцию, время зависит от вашего алгоритма, а также от скорости вашего компьютера. Чтобы рассчитать время без выполнения кода, вам, возможно, придется указать некоторые начальные параметры или использовать код машинного обучения, который рассчитает время выполнения, пройдя коды, но это кажется очень сложным.

Btw Попробуйте это с помощью import timeit.

Просто сохраните время до и после выполнения кода и вычтите их! Но этот метод не является точным, поскольку может происходить мгновенный запуск фонового процесса, который нарушает выполнение кода, и вы получите значительные изменения в времени выполнения небольших фрагментов кода.

timeit запускает ваш фрагмент кода за миллион раз (значение по умолчанию - 1000000), поэтому вы получаете статистически наиболее релевантное измерение времени выполнения кода!

# импорт требуемого модуля import timeit

# code snippet to be executed only once
mysetup = "from math import sqrt"

# code snippet whose execution time is to be measured
mycode = '''
def example():
    mylist = []
    for x in range(100):
        mylist.append(sqrt(x))
'''

# timeit statement
print timeit.timeit(setup = mysetup,
                    stmt = mycode,
                    number = 10000)
1

Полностью общее решение этого вопроса решило бы проблему остановки, которая была математически доказана невозможной.

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

  • 0
    Огромное спасибо. Я думаю, что именно так это и делается в Linux, когда вы устанавливаете пакет, затем он добавляет = для каждых 5% пока не завершит всю строку, что-то вроде этого: |==============| ,

Ещё вопросы

Сообщество Overcoder
Наверх
Меню