32

Как создать задержку времени?

25

У меня возникла проблема с добавлением задержки времени в скрипте на Python. Я пытаюсь реализовать паузу в исполнении программы, например на 50 миллисекунд, но не могу найти подходящее решение.

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

Может ли кто-нибудь подсказать, как правильно сделать задержку в 50 миллисекунд в Python? Какой модуль или метод лучше использовать для этой цели? Буду благодарен за разъяснения!

3 ответ(ов)

35

Этот код задерживает выполнение на 2.5 секунды:

import time

time.sleep(2.5)

Вот другой пример, где что-то выполняется примерно раз в минуту:

import time

while True:
    print("Это сообщение выводится раз в минуту.")
    time.sleep(60) # Задержка на 1 минуту (60 секунд).
0

Задержки также могут быть реализованы с использованием следующих методов.

Первый метод:

import time
time.sleep(5)  # Задержка на 5 секунд.

Второй метод заключается в использовании неявного ожидания:

driver.implicitly_wait(5)

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

self.wait.until(EC.presence_of_element_located((By.ID, 'UserName')))
0

Есть пять методов, которые я знаю: time.sleep(), pygame.time.wait(), pyplot.pause() из matplotlib, метод .after() и asyncio.sleep().


Пример time.sleep() (не используйте, если работаете с tkinter):

import time
print('Привет')
time.sleep(5)  # Количество секунд
print('Пока')

Пример pygame.time.wait() (не рекомендуется, если вы не используете окно pygame, но вы можете выйти из окна мгновенно):

import pygame
# Если собираетесь использовать модуль времени,
# не делайте "from pygame import *"
pygame.init()
print('Привет')
pygame.time.wait(5000)  # Миллисекунды
print('Пока')

Пример функции pyplot.pause() из matplotlib (не рекомендуется, если вы не используете график, но вы можете выйти из графика мгновенно):

import matplotlib
print('Привет')
matplotlib.pyplot.pause(5)  # Секунды
print('Пока')

Метод .after() (лучше всего использовать с Tkinter):

import tkinter as tk  # Tkinter для Python 2
root = tk.Tk()
print('Привет')
def ohhi():
    print('О, привет!')
root.after(5000, ohhi)  # Миллисекунды и затем функция
print('Пока')

Наконец, метод asyncio.sleep() (должен быть в асинхронном цикле):

await asyncio.sleep(5)
Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь