Posté(e) le 23 août 20205 a 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 ?
Posté(e) le 23 août 20205 a 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.
Posté(e) le 23 août 20205 a Auteur 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.
Posté(e) le 23 août 20205 a Auteur 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). Modifié le 25 août 20204 a par RFN Rajout de commentaires
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.