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 :

Arrêter programme python par action extérieure


Sujet :

Python

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2021
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2021
    Messages : 128
    Par défaut Arrêter programme python par action extérieure
    Bonjour,
    J'ai actuellement un programme python qui sert à piloter un relais connecté au port GPIO d'un raspberry. Dans le fonctionnement j'utilise une page web (sur serveur nodejs) qui me permet de lancer ce programme python (par un simple bouton), qui lui même pilote le relais. La problématique que je rencontre est que ce relais doit être activé cycliquement afin de contrôler correctement un équipement.

    A ce jour je lance correctement ce programme mais je ne suis pas en mesure d'arrêter correctement ce programme. En fait idéalement je pourrais lancer un second programme python pour arrêter le premier (ça commence à faire usine à gaz...), ou bien je prévois que mon programme python s'arrête avec l'apparition d'un événement mais la je ne sais pas trop comment m'y prendre.

    ici mon programme python (tout simple) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    import RPi.GPIO as gpio
    import time
    gpio.setwarnings(False)
    gpio.setmode(gpio.BCM)
     
    while True :
        gpio.output(16, gpio.HIGH)
        print("true")
        time.sleep(1)
        gpio.output(16, gpio.LOW)
        print("false")
        time.sleep(5)
    Peut-être il peut être possible d'utiliser le socket.io du nodejs pour envoyer un message vers le programme python qui servira de condition pour stopper ce meme programme python ? Une idée que je vais essayer de mettre en oeuvre, à moins que vous ayez d'autres solutions séduisantes à me proposer.
    En vous remerciant.

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 589
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 589
    Par défaut
    Salut,

    La commande bash kill (ou son équivalent) est faite pour çà.

    Après si vous écrivez une boucle infinie, il faut ajouter une condition d'arrêt.... Et c'est les premières choses qu'on apprend en programmation (vous ne demandez pas de l'aide pour faire un exercice mais écrire du vrai code sans pouvoir vous en dépatouillez car vous avez sauté la case tuto).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2021
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2021
    Messages : 128
    Par défaut
    Bonjour, Merci pour le conseil. Le problème (mon problème) est que je développe des petites applications perso mais je n'ai pas une grande connaissance de programmation (j'apprends sur le tas en fonction de mes besoins). Je sais que ce n'est pas l'idéal car je n'ai pas certaines bases... Voila pourquoi je sollicite ce Forum, ce qui ne m'empêche certainement pas de chercher et trouver par moi même des solutions (que je partage aussi).
    Dans tous les cas, merci de m'aider.

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 600
    Par défaut
    Proposition :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    while True:
        gpio.output(16, gpio.HIGH)
        print("true")
        time.sleep(1)
        gpio.output(16, gpio.LOW)
        print("false")
        time.sleep(5)
        if condition_atteinte_pour_quitter_le_while:
            break

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 589
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 589
    Par défaut
    Citation Envoyé par erwannoo Voir le message
    Voila pourquoi je sollicite ce Forum, ce qui ne m'empêche certainement pas de chercher et trouver par moi même des solutions (que je partage aussi).
    kill est une solution.

    Pour ce qui est d'écrire une boucle avec une condition, la solution est dans tous les tutos (et vous êtes supposé avoir un peu appris à programmer avant de poster). Et les tutos. sont la base du partage de la connaissance.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2021
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2021
    Messages : 128
    Par défaut
    Bonjour en essayant la solution Kill :

    je me rends compte qu'effectivement cela arrête le programme, mais si j'ai 3 programmes python qui tournent en parallèle alors ils seront tous arrêtés.

    J'aimerai trouver une solution qui puisse fermer un programme python spécifique avec une commande du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pkill -KILL nomduprog.py
    Je continue mes recherches.
    bon week end.

  7. #7
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 589
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 589
    Par défaut
    Citation Envoyé par erwannoo Voir le message
    J'aimerai trouver une solution qui puisse fermer un programme python spécifique avec une commande du genre
    kill ne prend en argument que l'identifiant du process.
    pkill, c'est autre chose: avec python en argument çà va tuer tous les processus qui tournent python.
    Normalement "pgrep python" devrait vous donner cette information (reste à choisir le bon).

    Là ce sont des bases Linux... et c'est pas facile de programmer (i.e. automatiser des actions système) sans savoir comment çà fonctionne.


    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  8. #8
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2021
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2021
    Messages : 128
    Par défaut
    Oui c'est certain,

    Ce qui fonctionne :

    avec test.py le nom du programme python qui sera arrêté.
    si je fait tourner en même temps le programme test2.py, alors il n'est pas arrêté.

Discussions similaires

  1. Réponses: 4
    Dernier message: 08/12/2019, 13h31
  2. Réponses: 0
    Dernier message: 28/06/2015, 13h28
  3. Réponses: 3
    Dernier message: 18/02/2015, 14h30
  4. Arrêt non souhaité programme Python lancé par Java
    Par a1331 dans le forum Général Java
    Réponses: 14
    Dernier message: 13/08/2013, 15h34
  5. Aide pour exercice livre "Apprendre à programmer en Python" par Swinnen
    Par reivilo1982 dans le forum Général Python
    Réponses: 4
    Dernier message: 28/02/2011, 13h35

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