Author: eudoxos
Date: 2009-01-10 11:42:40 +0100 (Sat, 10 Jan 2009)
New Revision: 1621

Modified:
   trunk/gui/py/yade-multi
Log:
Exit once the simulation finishes; do not rely on simulation exiting itself.


Modified: trunk/gui/py/yade-multi
===================================================================
--- trunk/gui/py/yade-multi     2009-01-10 08:11:53 UTC (rev 1620)
+++ trunk/gui/py/yade-multi     2009-01-10 10:42:40 UTC (rev 1621)
@@ -87,7 +87,7 @@
 
 parser=optparse.OptionParser(usage='%prog [options] TABLE SIMULATION.py\n\n  
%prog runs yade simulation multiple times with different parameters.\n  See 
http://yade.wikia.com/wiki/ScriptParametricStudy for details.')
 parser.add_option('-j',dest='maxJobs',type='int',help="Maximum number of 
simultaneous jobs to run (default: number of cores, i.e. 
%d)"%getNumCores(),metavar='NUM',default=getNumCores())
-parser.add_option('--log',dest='logFormat',help='Format of log files -- must 
contain a %, which will be replaced by line number (default: 
SIMULATION.%.log)',metavar='FORMAT')
+parser.add_option('--log',dest='logFormat',help='Format of log files -- must 
contain a % or @, which will be replaced by line number or by description 
column respectively (default: SIMULATION.%.log)',metavar='FORMAT')
 parser.add_option('-l','--lines',dest='lineList',help='Lines of TABLE to use, 
in the format 2,3-5,8,11-13 (default: all available lines in 
TABLE)',metavar='LIST')
 parser.add_option('--nice',dest='nice',type='int',help='Nice value of spawned 
jobs (default: 10)',default=10)
 parser.add_option('--executable',dest='executable',help='Name of the program 
to run (default: %s)'%sys.argv[0][:-6],default=sys.argv[0][:-6],metavar='FILE') 
## strip the '-multi' extension
@@ -100,7 +100,7 @@
        sys.exit(1)
 table,simul=args[0:2]
 if not logFormat: logFormat=(simul[:-3] if simul[-3:]=='.py' else 
simul)+".%.log"
-if not '%' in logFormat: raise StandardError("Log string must contain a `%'")
+if (not '%' in logFormat) and ('@' not in logFormat): raise StandardError("Log 
string must contain at least one of `%', `@'")
 
 print "Will run `%s' on `%s' with nice value %d, output redirected to `%s', %d 
jobs at a time."%(executable,simul,nice,logFormat,maxJobs)
 
@@ -124,12 +124,22 @@
                else: useLines+=[l]
 else: useLines=availableLines
 print "Will use lines ",', '.join([str(i) for i in useLines])+'.'
+# find column where description is
+try:
+       idColumn=ll[0].split().index('description')
+       idStrings={}
+       for i in useLines: idStrings[i]=ll[i].split()[idColumn] # textual 
descripion of respective lines 
+       print idStrings
+except IndexError:
+       idColumn=None
+       idStrings=None
 
 
 batches=[]
 for l in useLines:
        logFile=logFormat.replace('%',str(l))
-       batches.append('PARAM_TABLE=%s:%d nice -n %d %s -N PythonUI -- -n %s > 
%s 2>&1'%(table,l,nice,executable,simul,logFile))
+       if idStrings: logFile=logFile.replace('@',idStrings[l])
+       batches.append('PARAM_TABLE=%s:%d nice -n %d %s -N PythonUI -- -n -x %s 
> %s 2>&1'%(table,l,nice,executable,simul,logFile))
 print "Job summary:"
 for i in range(len(batches)):
        print '   #%d:'%i, batches[i]


_______________________________________________
Mailing list: https://launchpad.net/~yade-dev
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~yade-dev
More help   : https://help.launchpad.net/ListHelp

Reply via email to