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.
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
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")