Aller au contenu

Python & tasks sous Windows


RFN

Messages recommandés

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

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

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

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...