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
    863
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 863
    Points : 718
    Points
    718
    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 ?

  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

  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
    863
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 863
    Points : 718
    Points
    718
    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 ?

  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