web-dev-qa-db-fra.com

Vérifier si le programme s'exécute par programme

Je me demandais comment vous pourriez vérifier si le programme est en cours d'exécution en utilisant python et sinon ne l'exécutez pas. J'ai deux scripts python l'un est une interface graphique qui surveille un autre script). Donc, fondamentalement, si le deuxième script se bloque pour une raison quelconque, je voudrais qu'il recommence.

n.b. J'utilise python 3.4.2 sous Windows.

8
Sande

Le module psutil peut vous aider. Pour répertorier toutes les exécutions de processus, utilisez:

import psutil

print(psutil.pids()) # Print all pids

Pour accéder aux informations sur le processus, utilisez:

p = psutil.Process(1245)  # The pid of desired process
print(p.name()) # If the name is "python.exe" is called by python
print(p.cmdline()) # Is the command line this process has been called with

Si vous utilisez psutil.pids() sur un for, vous pouvez tout vérifier si ce processus utilise python, comme:

for pid in psutil.pids():
    p = psutil.Process(pid)
    if p.name() == "python.exe":
        print("Called By Python:"+ str(p.cmdline())

La documentation de psutil est disponible sur: https://pypi.python.org/pypi/psutil

EDIT 1

En supposant que le nom du script soit Pinger.py, vous pouvez utiliser cette fonction

def verification():
    for pid in psutil.pids():
        p = psutil.Process(pid)
        if p.name() == "python.exe" and len(p.cmdline()) > 1 and "Pinger.py" in p.cmdline()[1]:
            print ("running")
14
user6320679