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 :

Sauter des instructions dans une boucle while sur timer [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Octobre 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2015
    Messages : 2
    Par défaut Sauter des instructions dans une boucle while sur timer
    Bonjour à tous,

    Je suis tout nouveau sur le forum et je débute en python. Je suis ingénieur en conception microélectronique et je me sers de scripts pour gérer mes programmes de simulation. Auparavant j'écrivais des script Batch mais pour les scripts un peu long je trouve le code illisible et trop peu instinctif d'ou mon passage au langage python.

    J'ai pas mal cherché mais je ne trouve pas de réponse simple à ma question. Tout d'abord voici le morceau de code en question :

    import os

    psi=-10

    while psi <= 30:
    os.system("fem-bim<CTFs.ini")
    psi+=10
    (J'ai enlevé plein de code mais c'est pour que ce soit plus clair)

    Donc voila cela consiste à lancer un programme nommer fem-bim.exe dans une boucle while faisant varier le paramètre psi (je l'ai pas mis ici mais ce programme modifie aussi le fichier de configuration CTFs.ini). Le problème est que ce petit programme "fem-bim" bloque souvent (pour certaine valeurs de psi) et du coups bloque l’exécution du script python. Je tiens a préciser que le programme se bloque (sorte de recherche infinie) mais ne "plante" pas (toutes interruptions fonctionnent)

    J'aimerais bien qu'en cas de blocage (de plus de 10 sec par exemple), le script annule l’exécution de ce programme et poursuis l’exécution du script avec les valeurs suivantes de psi (en gros faire équivalent du "continue" dans une boucle while).

    Si quelqu'un a une solution ce serait cool

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur banc de test
    Inscrit en
    Mai 2014
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur banc de test
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2014
    Messages : 199
    Par défaut
    Bonjour,

    En remplacement de la fonction os.system il existe le module natif subprocess.

    Avec la fonction call :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    subprocess.call(args, *, stdin=None, stdout=None, stderr=None, shell=False, timeout=None)
    On peut ainsi paramétrer un timeout sur l'appel, si le timeout se déclenche on obtient une exception subprocess.TimeoutExpired

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    try:
        subprocess.call("cmd", timeout=10)
    except subprocess.TimeoutExpired:
        pass
    Pour plus d'infos sur les fonctionnalités : PEP 324 -- subprocess - New process module | Python.org

    - One small utility function is provided: subprocess.call(). It
    aims to be an enhancement over os.system(), while still very
    easy to use:

    - It does not use the Standard C function system(), which has
    limitations.

    - It does not call the shell implicitly.

    - No need for quoting; using an argument list.

    - The return value is easier to work with.

  3. #3
    Candidat au Club
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Octobre 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2015
    Messages : 2
    Par défaut
    Merci beaucoup pour ta réponse! ça fonctionne très bien

    Si jamais ça intéresse quelqu'un, avec un fichier d'initialisation (comme dans mon cas) il faut rajouter shell=True en argument sinon cela met "file not found".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    try:
    	subprocess.call("fem-bim<CTFs.ini", timeout=10, shell=True)
    except subprocess.TimeoutExpired:
    	pass
    Je met en résolu

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

Discussions similaires

  1. Instruction Getline dans une boucle while
    Par jamsgoodon dans le forum Débuter
    Réponses: 4
    Dernier message: 31/01/2011, 18h01
  2. Réponses: 4
    Dernier message: 20/04/2010, 11h24
  3. Gestion des erreurs dans une boucle While
    Par Gregory.M dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/08/2008, 20h57
  4. Réponses: 3
    Dernier message: 29/08/2007, 17h17
  5. [MySQL] récupérer les dimensions des images dans une boucle while
    Par Navyel dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 26/08/2007, 11h09

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