Partage
  • Partager sur Facebook
  • Partager sur Twitter

Temporiser l'état d'une variable

Donner une valeur à une variable pendant un certain temps

    30 mars 2020 à 22:46:33

    Bonjour,

    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. 

    Merci.

    • Partager sur Facebook
    • Partager sur Twitter
      30 mars 2020 à 23:19:36

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



      • Partager sur Facebook
      • Partager sur Twitter

      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)

        31 mars 2020 à 10:20:09

        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




        • Partager sur Facebook
        • Partager sur Twitter

        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.
        • Editeur
        • Markdown