Jump to content

Python & tasks sous Windows


Recommended Posts

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 ?

Link to post
Share on other 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.

Link to post
Share on other 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).

Edited by RFN
Rajout de commentaires
  • Thanks 1
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...