Неверное измерение времени выполнения программы

При выполнении программы все работает хорошо, кроме вывода времени выполнения - оно всегда равно 0.00... В чем тут проблема?

from tkinter import *
from tkinter import messagebox
import time


# Функция сортировки пузырьком
def bubble_sort(arr):
    n = len(arr)
    start_time = time.time()

    for i in range(n):
        for j in range(0, n - i - 1):
            if arr[j] > arr[j + 1]:
                arr[j], arr[j + 1] = arr[j + 1], arr[j]

    end_time = time.time()
    return arr, end_time - start_time


# Функция сортировки выбором
def selection_sort(arr):
    n = len(arr)
    start_time = time.time()

    for i in range(n):
        min_idx = i
        for j in range(i + 1, n):
            if arr[j] < arr[min_idx]:
                min_idx = j
        arr[i], arr[min_idx] = arr[min_idx], arr[i]

    end_time = time.time()
    return arr, end_time - start_time


# Функция выбора сортировки
def sort_numbers():
    global sorted_numbers, time_taken
    sequence = entry.get()

    try:
        numbers = [int(num) for num in sequence.split(",")]
        if sorting_var.get() == 1:
            sorted_numbers, time_taken = bubble_sort(numbers)
        elif sorting_var.get() == 2:
            sorted_numbers, time_taken = selection_sort(numbers)

        output.config(state=NORMAL)
        output.delete(1.0, END)
        output.insert(END, f"Sorted Sequence: {', '.join(map(str, sorted_numbers))}\n")
        output.insert(END, f"Time taken: {time_taken:.10f} seconds")
        output.config(state=DISABLED)
    except ValueError:
        messagebox.showerror("Error", "Please enter a valid sequence of numbers separated by commas.")


# Создание рабочего окна
root = Tk()
root.title("Number Sorter")

# Создание виджетов меток, ввода, комбинированного окна, кнопки и вывода текста
label = Label(root, text="Enter numbers separated by commas:")
label.pack()

entry = Entry(root)
entry.pack()

sort_options = ["Bubble Sort", "Selection Sort"]
sorting_var = IntVar()
sorting_var.set(1)  # стандартное значение
combobox = OptionMenu(root, sorting_var, *range(1, len(sort_options) + 1), *sort_options)
combobox.pack()

start_button = Button(root, text="Start", command=sort_numbers)
start_button.pack()

output = Text(root, height=10, width=50)
output.config(state=DISABLED)
output.pack()

root.mainloop()

Ответы (1 шт):

Автор решения: MarianD

Добавите после команды start_time = time.time() команду time.sleep(2), вот так

start_time = time.time()
time.sleep(2)

и вы увидите, что все в порядке. Современные компьютеры работает очень, очень быстро. :-)

(Затем, конечно, эту команду удалите.)


Пока речь идет о точности, вы можете требовать какую-либо точность, но точность все равно не зависит от ваших требований — см. часть time — Доступ к времени и преобразования в документации Стандартная библиотека Python:

Точность различных функций реального времени может быть меньше, чем предполагают единицы измерения, в которых выражается их значение или аргумент. Например, в большинстве систем Unix часы «тикают» только 50 или 100 раз в секунду.

→ Ссылка