Ich schrieb ein Python-Skript, um mehrere NS-3-Simulationen mit unterschiedlichen Seeds und verschiedenen Knotenzahlen zu laufen. Mein Skript ruft ./waf --run=<scenario_name>
auf, führt dann 10 Seeds aus, ändert die Anzahl der Knoten und führt 10 weitere Seeds aus und so weiter.run Python-Skript im Hintergrund
Das Problem ist, dass ich nach dem Aufruf meines Skripts den Benutzer für eine Eingabe (welches Szenario ausgeführt werden soll). Wegen dieser raw_input
Anruf konnte ich nohup myScript.py &
nicht verwenden. Ich versuchte auch CTRL + Z
, bg
und disown
. Aber das hat auch nicht funktioniert.
Hier ist mein Skript:
#!/usr/bin/python
import subprocess
from pathlib import Path
import glob
scenario = raw_input("Type scenario (foo or bar): ")
if scenario == 'foo':
wafString = './waf --run "scratch/test-foo --nodeCount='
elif scenario == 'bar':
wafString = './waf --run "scratch/test-bar --nodeCount='
else:
print ("Wrong input!")
ns3Global = 'NS_GLOBAL_VALUE="RngRun='
numbers = [25, 50, 100] # number of nodes
for nodeCount in numbers:
for rngRun in range(1,11):
myArgument = ns3Global + str(rngRun) + '" ' + wafString + str(nodeCount) + '" '
print "*** Running experiment with " + str(nodeCount) + \
" nodes and random seed " + str(rngRun) + "\n"
subprocess.call(myArgument, shell=True)
Jede Hilfe wird sehr geschätzt.
Warum nicht 2 Skripte schreiben? Das erste Skript fragt den Benutzer nach der Eingabe und startet dann das zweite Skript (mit dem Szenario-Parameter) im Hintergrund und beendet sich selbst. –