IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

tâche en arrière plan [Python 3.X]


Sujet :

Python

  1. #1
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2021
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2021
    Messages : 5
    Par défaut tâche en arrière plan
    Bonjour ou Bonsoir à tous, j'aimerai si possible que quelqu'un m'explique comment ce serait faisable qu'une variable soit incrémentée en "arrière plan" sans que le programme soit occupé en sorte à ne faire que ça, dans l'exemple ci-dessous j'ai fait une incrémentation de la variable seconde toutes les secondes et j'aimerais pouvoir print la variable sans que l'incrémentation ne se stop en arrière plan. J'ai entendu parler de la lib "multiproccessing" : https://docs.python.org/3/library/multiprocessing.html mais je ne pense pas que ce soit une solution appropriée à mon exemple.

    Merci d'avance.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    import time
     
    #En secondes
    seconde= 0
     
    #En minutes
    minute = 0
     
    def temps():
      global seconde, minute
     
      while True:
        time.sleep(1)
        seconde = seconde +1
     
        while seconde == 60:
          minute = minute +1
     
     
     
    temps()

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Tout d'abord pour ton code, un while dans lequel la variable testée n'est pas mise à jour c'est typiquement une boucle infinie. D'ailleurs suis pas certain que ce while seconde == 60 était bien ce que tu avais en tête (visiblement à partir de là la boucle des secondes au dessus n'est plus traitée).

    Ensuite "incrémenter une variable en arrière plan" c'est une demande des plus étranges. Les choses que l'on met en arrière plan se sont des affichages (une barre de progression), des traitements (calcul des premiers 10 milliards nombre premiers) mais des "incréments de variable"??? Une variable c'est un outil, on l'incrémente pour une raison, pas pour le plaisir de l'incrémenter. C'est peut-être pour ça que la lib multiprocessing ne te semble pas appropriée. Parce que probablement ton idée n'a aucune raison d'être (surtout qu'un print(variable) ça ne va pas te coûter grand chose). Cas de problème XY ???

    Pour les traitements en parallèle tu peux regarder du côté des thread. Exemple
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    #!/usr/bin/env python3
    # coding: utf-8
     
    import random
    import sys
    import time
    from threading import Thread
    from threading import RLock
     
    class cTraitement(Thread):
    	def __init__(self, mot, verrou, count=5):
    		super().__init__()
    		self.__mot=mot
    		self.__verrou=verrou
    		self.__count=count
    	# __init__()
     
    	def run(self):
    		super().run()
    		for i in range(self.__count):
    			with self.__verrou:
    				for l in self.__mot:
    					sys.stdout.write(l)
    					sys.stdout.flush()
    				# for
    			# with
    			time.sleep(random.randint(1, 60) / 100.0 + 0.2)
    		# for
    	# run()
    # class cTraitement
     
    verrou=RLock()
    thread=tuple(cTraitement(x, verrou) for x in ("canard", "tortue", "lapin"))
    for t in thread: t.start()
    for t in thread: t.join()
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Exécuter une tâche en "arrière plan" dans un container web
    Par Tyler_Durden dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 09/08/2011, 15h06
  2. Empêcher la double exécution d'une tâche en arrière plan.
    Par Paul Van Walleghem dans le forum VB.NET
    Réponses: 2
    Dernier message: 29/08/2010, 16h12
  3. Impossible de faire du piping entre deux tâches d'arrière-plan
    Par CetTer dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 18/05/2009, 11h27
  4. Réponses: 2
    Dernier message: 13/05/2009, 18h37
  5. [Système] PHP Cron tâche en arrière plan
    Par Hug0_76 dans le forum Langage
    Réponses: 1
    Dernier message: 12/03/2007, 09h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo