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 :

Double utilisation de l'interpréteur


Sujet :

Python

  1. #1
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    859
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 859
    Points : 714
    Points
    714
    Par défaut Double utilisation de l'interpréteur
    Je souaite, lorsqu'un programme python s'exécute, qu'il puisse vérifier que l'on ne l'a pas déjà lancé.

    Quelqu'un aurait-il une idée simple ?
    Si tu ne vis pas ce que tu penses alors tu penses ce que tu vis.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    376
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 376
    Points : 402
    Points
    402
    Par défaut
    Tu peux vérifier dans les process que ton script n'est pas en cours d'execution. Mais le code ne sera pas le même pour Windows & Unix, c'est pas terrible.
    Sinon il y a une solution très utilisée sous UNIX qui est de créer dans le /tmp un fichier tonprg.pid qui contient le pid de ton script. Tu le créer au lancement du prg et tu l'efface à la fin. Ensuite dans ton code tu fait un truc du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Si monfichier.pid existe alors
      si pid existe alors 
        quit (prg déjà lancé)
      sinon 
        recrée fichier avec nouveau pid
      fin si
    sinon
      crée fichier avec pid
    fin si
    "There are two major products that come out of Berkeley: LSD and UNIX.
    We don't believe this to be a coincidence."
    - Jeremy S. Anderson

    La FAQ Python
    Les cours et tutoriels pour apprendre Python
    Le Forum Python

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 25
    Points : 18
    Points
    18
    Par défaut
    Tu peux également "connecter" ton script sur un port spécifique. Si le port est libre, le script n'est pas lancé. S'il est occupé, il l'est.

    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    PORT=6543 # au choix mais > 1024 sous linux si pas root et vérif pas déjà occupé.
    from socket import socket
    sock=socket()
    try:sock.bind(('',PORT))
    except:raise "Ce programme est déjà ouvert..."

  4. #4
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    859
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 859
    Points : 714
    Points
    714
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sinon il y a une solution très utilisée sous UNIX
    Est-ce possible sous Windows ?

    La solution qui consiste à se conecter sur un port ne me plait guère en effet si le script se plante et qu'on le relance, que se passe-t-il : la ressource est occupée. D'ailleurs pourquoi utiliser un port et ne pas faire cela avec un mutex ?
    Si tu ne vis pas ce que tu penses alors tu penses ce que tu vis.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 25
    Points : 18
    Points
    18
    Par défaut
    si le script se plante et qu'on le relance, que se passe-t-il : la ressource est occupée
    Justement non, un port n'est occupé que tant que le programme qui l'occupe fonctionne.

    Sinon il y a une solution très utilisée sous UNIX qui est de créer dans le /tmp un fichier tonprg.pid qui contient le pid de ton script. Tu le créer au lancement du prg et tu l'efface à la fin.
    Là, par contre, si le prog plante, il ne va pas se relancer...

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

Discussions similaires

  1. problème basique dans l'utilisation de l'interpréteur Python
    Par fdair07 dans le forum Général Python
    Réponses: 3
    Dernier message: 29/08/2012, 15h58
  2. [XL-2003] La textbox en double utilisation
    Par brownthefou dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/05/2012, 10h06
  3. Cellule double utilisation (formule+valeure)
    Par lucazzo dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/10/2008, 15h37
  4. VBO et buffer à double utilisation
    Par casafa dans le forum OpenGL
    Réponses: 1
    Dernier message: 12/06/2008, 21h40
  5. [PDO] Double utilisation impossible d'un résultat execute()
    Par Tchupacabra dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 23/11/2007, 09h30

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