RFN Posté(e) le 23 août 2020 Partager Posté(e) le 23 août 2020 Bonjour, Autant c'est facile sous Linux, autant sous Windows, je n'arrive pas en python à savoir si un script spécifique est déjà en cours ou pas. Le but est de lancer le script seulement s'il n'est pas déjà en cours. Des idées ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
brice.wernet Posté(e) le 23 août 2020 Partager Posté(e) le 23 août 2020 Soit tu utilises les tâche windows en interdisant à la tâche de se déclencher si elle est déjà en cours. Soit tu utilises un fichier dans le répertoire temporaire pour faire un verrou (en général, on met dans ce fichier le PID du process en cours pour vérifier que c'est le bon - ça permet de dire que si le fichier existe mais que le PID n'existe plus ou n'est pas le bon exécutable, c'est qu'on peut effacer ce fichier de lock). Soit tu dig dans le fonctionnement même de Windows. Lien vers le commentaire Partager sur d’autres sites More sharing options...
RFN Posté(e) le 23 août 2020 Auteur Partager Posté(e) le 23 août 2020 Merci pour ta réponse. En fait on peut scanner les process en cours avec la lib 'psutil' et retrouver le nom du script dans 'cmdline'. Je pense que je vais pouvoir m'en sortir ainsi. Lien vers le commentaire Partager sur d’autres sites More sharing options...
RFN Posté(e) le 23 août 2020 Auteur Partager Posté(e) le 23 août 2020 Pour ceux que cela intéresse, ça donne un truc de ce genre (ça doit pouvoir s'optimiser) : pid = psutil.pids() for i in pid: try : reponse = psutil.Process(i) except: continue if reponse.name() in ['pythonw.exe', 'python.exe']: for ii in range(len(reponse.cmdline())): # on cherche dans tous les paramètres, util quand le lancement a été fait par un IDE (sinon seul reponse.cmdline()[1] n'a un intérêt car il représente le scrypt donner en paramètre pour le runtime python) if 'Raspy_home' in reponse.cmdline()[ii]: # on recherche le script Raspi_home.py Nota : si on teste la présence du programme que l'on lance, il faudra ajouter un compteur et ne quitter que si le compteur est supérieur à 1 (car il faut prendre en compte l'instance qui se lance). Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.