Подтвердить что ты не робот

Python: высокая точность time.sleep

Можете ли вы рассказать мне, как я могу получить высокоточную функцию сна в Python2.6 на Win32 и Linux?

4b9b3361

Ответ 1

Вы можете использовать числа с плавающей запятой в sleep():

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

Итак,

time.sleep(0.5)

будет спать полсекунды.

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

Ответ 2

Вот аналогичный вопрос:

how-accurate-is-pythons-time-sleep

В Linux, если вам нужна высокая точность, вы можете посмотреть на использование ctypes для вызова nanosleep() или clock_nanosleep(). Я не уверен в всех последствиях попытки этого.

Ответ 3

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()

Это очень хорошая точность на Linux