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 ?
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 ?
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
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..."
Est-ce possible sous Windows ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part Sinon il y a une solution très utilisée sous UNIX
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 ?
Justement non, un port n'est occupé que tant que le programme qui l'occupe fonctionne.si le script se plante et qu'on le relance, que se passe-t-il : la ressource est occupée
Là, par contre, si le prog plante, il ne va pas se relancer...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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager