J'ai un script python 'b.py' qui imprime le temps de 5 secondes.Comment puis-je appeler un script python à partir d'un script python
while (1):
print "Start : %s" % time.ctime()
time.sleep(5)
print "End : %s" % time.ctime()
time.sleep(5)
Et dans mon a.py, j'appelle b.py par:
def run_b():
print "Calling run b"
try:
cmd = ["./b.py"]
p = subprocess.Popen(cmd,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
for line in iter(p.stdout.readline, b''):
print (">>>" + line.rstrip())
except OSError as e:
print >>sys.stderr, "fcs Execution failed:", e
return None
et plus tard, je tue 'b.py' par: PS_PATH = «/usr/bin/ps -efW "
def kill_b(program):
try:
cmd = shlex.split(PS_PATH)
retval = subprocess.check_output(cmd).rstrip()
for line in retval.splitlines():
if program in line:
print "line =" + line
pid = line.split(None)[1]
os.kill(int(pid), signal.SIGKILL)
except OSError as e:
print >>sys.stderr, "kill_all Execution failed:", e
except subprocess.CalledProcessError as e:
print >>sys.stderr, "kill_all Execution failed:", e
run_b()
time.sleep(600)
kill_b("b.py")
J'ai 2 questions. 1. Pourquoi je ne vois aucune impression depuis 'b.py' et quand je fais 'ps -efW' je ne vois pas de processus nommé 'b.py'? 2. Pourquoi quand je tue un processus comme ci-dessus, je vois 'autorisation refusée'? Je cours au-dessus du script sur cynwin sous Windows.
Merci.
Création d'un python – Nick
un moyen plus facile de tuer 'b.py' est de retourner' p' de 'run_b()' avant de commencer à lire la sortie de 'b.py' et d'appeler' p.kill(); p.wait() 'plus tard. – jfs
vérifiez que './B.py' est démarré avec succès (' p.poll() 'devrait être' None') – jfs