¿Cómo hago un retraso de tiempo? [duplicar]

Resuelto user46646 asked hace 15 años • 0 respuestas

¿Cómo pongo un retraso en un script de Python?

user46646 avatar Feb 04 '09 14:02 user46646
Aceptado

Esto se retrasa durante 2,5 segundos:

import time

time.sleep(2.5)

Aquí hay otro ejemplo en el que algo se ejecuta aproximadamente una vez por minuto:

import time

while True:
    print("This prints once a minute.")
    time.sleep(60) # Delay for 1 minute (60 seconds).
Evan Fosmark avatar Feb 04 '2009 07:02 Evan Fosmark

Uso sleep()desde el timemódulo. Puede necesitar un argumento flotante para una resolución inferior a un segundo.

from time import sleep
sleep(0.1)  # Time in seconds
pobk avatar Sep 15 '2008 16:09 pobk

¿Cómo puedo retrasar el tiempo en Python?

En un solo hilo sugiero la función de suspensión :

>>> from time import sleep

>>> sleep(4)

Esta función en realidad suspende el procesamiento del subproceso en el que es llamado por el sistema operativo, permitiendo que otros subprocesos y procesos se ejecuten mientras está inactivo.

Úselo para ese propósito, o simplemente para retrasar la ejecución de una función. Por ejemplo:

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

"¡Hurra!" se imprime 3 segundos después de presionar Enter.

Ejemplo de uso sleepcon múltiples subprocesos y procesos

Nuevamente, sleepsuspende su hilo: utiliza una potencia de procesamiento casi nula.

Para demostrarlo, cree un script como este (primero intenté esto en un shell interactivo de Python 3.5, pero los subprocesos no pueden encontrar la party_laterfunción por algún motivo):

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

Ejemplo de salida de este script:

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

subprocesos múltiples

Puede activar una función para que se llame más adelante en un hilo separado con el objeto Timer de hilo :

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

>>>

La línea en blanco ilustra que la función se imprimió en mi salida estándar y tuve que presionar Enterpara asegurarme de que estaba en el mensaje.

La ventaja de este método es que mientras el Timerhilo esperaba, pude hacer otras cosas, en este caso, presionar Enteruna vez, antes de que se ejecutara la función (consulte el primer mensaje vacío).

No hay un objeto respectivo en la biblioteca de multiprocesamiento . Puedes crear uno, pero probablemente no exista por algún motivo. Un subproceso tiene mucho más sentido para un temporizador simple que un subproceso completamente nuevo.

Russia Must Remove Putin avatar Jun 21 '2017 03:06 Russia Must Remove Putin

Los retrasos también se pueden implementar utilizando los siguientes métodos.

El primer método:

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

El segundo método para retrasar sería utilizar el método de espera implícito:

 driver.implicitly_wait(5)

El tercer método es más útil cuando hay que esperar hasta que se complete una acción concreta o hasta que se encuentre un elemento:

self.wait.until(EC.presence_of_element_located((By.ID, 'UserName'))
Humble_boy avatar Jan 05 '2018 10:01 Humble_boy