Высокоточные часы в Python - PullRequest
       84

Высокоточные часы в Python

41 голосов
/ 21 декабря 2009

Есть ли способ измерения времени с высокой точностью в Python - точнее, чем за одну секунду? Я сомневаюсь, что есть кросс-платформенный способ сделать это; Мне интересно время с высокой точностью в Unix, особенно в Solaris, работающем на машине Sun SPARC.

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

Ответы [ 12 ]

0 голосов
/ 19 марта 2019

Оригинальный вопрос, специально заданный для Unix, но несколько ответов касались Windows, и в результате на окнах вводит в заблуждение информацию. Разрешение таймера по умолчанию для окон составляет 15,6 мс , которое можно проверить здесь.

Используя слегка модифицированный скрипт из cod3monk3y, я могу показать, что разрешение таймера Windows по умолчанию составляет ~ 15 миллисекунд. Я использую инструмент здесь , чтобы изменить разрешение.

Сценарий:

import time

# measure the smallest time delta by spinning until the time changes
def measure():
    t0 = time.time()
    t1 = t0
    while t1 == t0:
        t1 = time.time()
    return t1-t0

samples = [measure() for i in range(30)]

for s in samples:
    print(f'time delta: {s:.4f} seconds') 

enter image description here

enter image description here

Эти результаты были собраны на 64-битной Windows 10 Pro, работающей на 64-битной Python 3.7.

0 голосов
/ 12 января 2019
def start(self):
    sec_arg = 10.0
    cptr = 0
    time_start = time.time()
    time_init = time.time()
    while True:
        cptr += 1
        time_start = time.time()
        time.sleep(((time_init + (sec_arg * cptr)) - time_start ))

        # AND YOUR CODE .......
        t00 = threading.Thread(name='thread_request', target=self.send_request, args=([]))
        t00.start()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...