Bonjour à tous,

Je suis nouveau dans le monde de Python, également nouveau sur Développez.net.

Je suis en train de faire un petit script qui lancerait une tâche uniquement si celle-ci n'existe pas.

Je suis déjà super étonné qu'il n'existe pas de fonction toute faite dans python..?


Cela fait maintenant 3 jours que je cherche sans résultat concluant, le code qui se rapproche le plus que j'ai trouvé est le suivant:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
import psutil
PROCNAME = 'pythonw.exe'
for proc in psutil.process_iter():
  if proc.name == PROCNAME:
    print("OK")
    else:
      print ("Not found")
Résultat
Pourtant si je fais un simple affichage des processus il est bien présent
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
>>> for p in psutil.process_iter ():
	print(p)
 
 
psutil.Process(pid=0, name='System Idle Process')
psutil.Process(pid=4, name='System')
psutil.Process(pid=128)
psutil.Process(pid=296)
(...)
psutil.Process(pid=428)
psutil.Process(pid=432)
psutil.Process(pid=36548, name='pythonw.exe')

Si j'utilise son PID pour l'interroger ça fonctionne, mais pas avec .nom
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
for p in psutil.process_iter (): 
   if p.pid == 36548: 
     print(p)
     break 
else: 
   print("Not found")
 
 
psutil.Process(pid=36548, name='pythonw.exe')

Vu que le PID change à chaque utilisation de mon processus, je ne peux pas utiliser le PID comme moyen pour le détecter.
Il me faut donc un moyen de le localiser via son nom.

Quelqu'un à une solution svp ?

Un grand merci d'avance,
Bien à vous

Gauthier



Config: Python 3.4 & Win 7 Pro