-
Notifications
You must be signed in to change notification settings - Fork 0
/
temporizador.py
70 lines (55 loc) · 1.66 KB
/
temporizador.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
'''
Utilidades relacionadas a los módulos `time` y `datetime`.
'''
import threading
import time
import datetime
def _timer(stop_event, espera:int):
'''Bucle del timer para el thread.'''
start = time.time()
while not stop_event.is_set():
actual = time.time()
lapso = int(actual - start)
print(f"En ejecución: {lapso} s", end="\n")
time.sleep(espera)
def terminal_time(funcion,espera=10):
'''
Imprime por terminal el tiempo transcurrido mientras
se ejecuta a función ingresada.
### parámetros
:funcion: nombre de la función que se ejecutará.
Usar `lambda: foo(arg)` si es necesario pasar argumentos.
:espera: segundos de espera entre impresiones.
'''
stop_event = threading.Event()
timer_thread = threading.Thread(target=_timer, args=(stop_event,espera,))
timer_thread.start()
try:
# EJECUCIÓN
funcion()
stop_event.set()
timer_thread.join()
except KeyboardInterrupt:
# Detener el temporizador con terminal
stop_event.set()
timer_thread.join()
print("\nTemporizador detenido.")
def timestamp():
return datetime.datetime.now()
def sleep(t):
'''Envolutura de `time.sleep`.'''
time.sleep(t)
class TiempoEjec:
'''Contar intervalos temporales.
**Inicia al instanciar**.
Usar método `reset` para volver a
contar desde 0.
'''
def __init__(self) -> None:
self.start = time.time()
def stop(self):
'''Retornar tiempo transcurrido.'''
return time.time() - self.start
def reset(self):
''''''
self.start = time.time()