Как я могу сделать временную задержку в Python?


Я хотел бы знать, как установить временную задержку в сценарии Python.


Answers



import time
time.sleep(5)   # delays for 5 seconds. You can Also Use Float Value.

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

import time 
while True:
    print("This prints once a minute.")
    time.sleep(60)   # Delay for 1 minute (60 seconds).



Вы можете использовать функцию sleep () в модуле времени. Он может принимать аргумент float для второго разрешения.

from time import sleep
sleep(0.1) # Time in seconds.



Прочтите https://web.archive.org/web/20090207081238/http://faqts.com/knowledge_base/view.phtml/aid/2609/fid/378 , что может помочь вам:

Попробуйте функцию сна в модуле времени.

import time
time.sleep(60)

И поставьте это в цикле while, и инструкция будет выполняться только в минуту ... Это позволяет вам запускать инструкцию с предопределенными интервалами независимо от того, сколько времени занимает команда (до тех пор, пока она занимает менее минуты или 5 или 60 или что бы вы ни установили) Например, я хотел запустить пинг один раз в минуту. Если я всего лишь time.sleep(60) или time.sleep(45) даже, пинг не всегда занимает столько же времени. Вот код :)

time.sleep(time.localtime(time.time())[5])

[5] просто вытягивает секунды из возвращаемого значения time.localtime() .

Самое замечательное в time.sleep заключается в том, что он поддерживает числа с плавающей запятой!

import time
time.sleep(0.1) 

http://python.org/doc/current/lib/module-time.html




Немного веселья с сонным генератором.

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

Задержка, измеренная с последнего раза (просыпается регулярно)

Ситуация может заключаться в том, что мы хотим делать что-то как можно last_time , и мы не хотим беспокоиться о всех last_time , next_time за нашим кодом.

зуммер

Следующий код ( sleepy.py ) определяет buzzergen gerenarator

import time
from itertools import count

def buzzergen(period):
    nexttime = time.time() + period
    for i in count():
        now = time.time()
        tosleep = nexttime - now
        if tosleep > 0:
            time.sleep(tosleep)
            nexttime += period
        else:
            nexttime = now + period
        yield i, nexttime

Вызов регулярного buzzergen

from sleepy import buzzergen
import time
buzzer = buzzergen(3) # planning to wake up each 3 seconds
print time.time()
buzzer.next()
print time.time()
time.sleep(2)
buzzer.next()
print time.time()
time.sleep(5) # sleeping a bit longer than usually
buzzer.next()
print time.time()
buzzer.next()
print time.time()

и запустив его, мы видим:

1400102636.46
1400102639.46
1400102642.46
1400102647.47
1400102650.47

Мы также можем использовать его непосредственно в цикле:

import random
for ring in buzzergen(3):
    print "now", time.time()
    print "ring", ring
    time.sleep(random.choice([0, 2, 4, 6]))

и запустив его, мы увидим:

now 1400102751.46
ring (0, 1400102754.461676)
now 1400102754.46
ring (1, 1400102757.461676)
now 1400102757.46
ring (2, 1400102760.461676)
now 1400102760.46
ring (3, 1400102763.461676)
now 1400102766.47
ring (4, 1400102769.47115)
now 1400102769.47
ring (5, 1400102772.47115)
now 1400102772.47
ring (6, 1400102775.47115)
now 1400102775.47
ring (7, 1400102778.47115)

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




Как я могу сделать временную задержку в Python?

В одном потоке я предлагаю функцию сна:

>>> from time import sleep

>>> sleep(4)

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

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

>>> def party_time():
...     print('hooray!')
... 
>>> sleep(3); party_time()
hooray!

"Ура!" напечатано через 3 секунды после нажатия Enter .

Пример использования sleep с несколькими потоками и процессами

Опять же, sleep приостанавливает вашу нить - он использует только нулевую вычислительную мощность.

Чтобы продемонстрировать, создайте такой скрипт (я сначала попытался это сделать в интерактивной оболочке Python 3.5, но party_later не могут найти функцию party_later по какой-то причине):

from concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutor, as_completed
from time import sleep, time

def party_later(kind='', n=''):
    sleep(3)
    return kind + n + ' party time!: ' + __name__

def main():
    with ProcessPoolExecutor() as proc_executor:
        with ThreadPoolExecutor() as thread_executor:
            start_time = time()
            proc_future1 = proc_executor.submit(party_later, kind='proc', n='1')
            proc_future2 = proc_executor.submit(party_later, kind='proc', n='2')
            thread_future1 = thread_executor.submit(party_later, kind='thread', n='1')
            thread_future2 = thread_executor.submit(party_later, kind='thread', n='2')
            for f in as_completed([
              proc_future1, proc_future2, thread_future1, thread_future2,]):
                print(f.result())
            end_time = time()
    print('total time to execute four 3-sec functions:', end_time - start_time)

if __name__ == '__main__':
    main()

Пример вывода из этого скрипта:

thread1 party time!: __main__
thread2 party time!: __main__
proc1 party time!: __mp_main__
proc2 party time!: __mp_main__
total time to execute four 3-sec functions: 3.4519670009613037

Многопоточность

Вы можете вызвать функцию, которая будет вызываться позднее в отдельном потоке с помощью объекта Threading Timer :

>>> from threading import Timer
>>> t = Timer(3, party_time, args=None, kwargs=None)
>>> t.start()
>>>
>>> hooray!

>>> 

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

Поверхность этого метода заключается в том, что, пока поток Timer ждет, я смог сделать другие вещи, в этом случае, нажав Enter один раз - до выполнения функции (см. Первое пустое приглашение).

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




Библиотека tkinter в стандартной библиотеке Python представляет собой интерактивный инструмент, который можно импортировать. В принципе, вы можете создавать кнопки и поля, всплывающие окна и прочее, которые отображаются в виде окон, которыми вы управляете с помощью кода.

Если вы используете tkinter, НЕ ИСПОЛЬЗУЙТЕ TIME.SLEEP() потому что это TIME.SLEEP() вашу программу. Это случилось со мной. Вместо этого используйте root.after() и замените значения на сколько секунд, с миллисекундами. Например, time.sleep(1) эквивалентен root.after(1000) в tkinter.

В противном случае, time.sleep() , о чем многие ответы указывают, это путь.




Чтобы установить временную задержку, вы должны импортировать модуль time . И с этим модулем вам нужно только написать:

time.sleep(The amount of time)

Например, если вы хотите поставить временную задержку за секунду до того, как компьютер выполнит другую строку, вы должны поставить:

time.sleep(1)
print('Hello World!')

Это все :)




Хороший вопрос.

Вы можете получить это, просто сделав это:

from time import sleep

# doing stuff
sleep(0.5) # sleeping half a second (sleep() uses seconds, but you can also use floats)
# doing stuff..

Надеюсь, я мог бы помочь.




задержки выполняются с помощью библиотеки времени , в частности функции time.sleep () ...

Чтобы заставить его подождать секунду:

from time import sleep
sleep(1)

Это работает, потому что:

from time import sleep

вы извлекаете функцию сна только из библиотеки времени, что означает, что вы можете просто вызвать ее с помощью:

sleep(seconds)

вместо того, чтобы печатать:

time.sleep()

который неудобно долго набирать.

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

Выполнение из [library] import [function] (, [function2]) отлично, если вы просто хотите определенные части модуля.

Вы также можете сделать это как:

import time
time.sleep(1)

и у вас будет доступ к другим функциям библиотеки времени, например time.clock (), пока вы вводите время. но вы не можете создать переменное время.




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

Начнем с самого простого:

import time
time.sleep(5) #delay for 5 seconds.

Второй метод задержки будет использовать метод неявного ожидания.

 driver.implicitly_wait(5)

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

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



Использование pygame

import pygame
pygame.init()
while True:
    pygame.time.wait(1000)
    print("This prints every second.")
    print("Please note that this method uses milliseconds.")