est-il possible de temporiser une variable ? Par exemple je souhaiterais qu'une variable valant 0 , vaut 15 mais seulement pendant 10 secondes admettons ensuite elle retournera à sa valeur de 0.
Est-ce qu'il faut voir du coté de "time" ? Si oui c'est déjà fait.
Voici un exemple tout bête, j'avais rien de précis en tête...
import time
import threading
var = 0
start = time.time()
def change_value():
global var
while True:
t = time.time() - start
if t >= 5:
var = 15
break
time.sleep(0.01) # Limite la consommation mémoire
def print_value():
while var == 0:
print(var)
time.sleep(1)
print(var)
new_thread_1 = threading.Thread(target=change_value)
new_thread_2 = threading.Thread(target=print_value)
new_thread_1.start()
new_thread_2.start()
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Utiliser threading c'est un peu lourd pour un truc aussi simple.
Voici une solution avec un générateur :
from time import time
def max_sec(val, s):
start = time()
while True:
now = time()
if now - start < s:
yield val
else:
yield 0
gen = max(15, 10) # crée un générateur qui renvoie 15 pendant les 10 premières secondes
print(next(gen)) # c'est le premier next qui démarre le décompte
...
print(next(gen)) # ensuite ça affiche 15, ou 0 si les 10 secondes sont dépassées
et en plus, tu peux même faire :
for t in gen:
if t == 0:
break
... # faire des trucs pendant 10 secondes
Temporiser l'état d'une variable
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)