-
Notifications
You must be signed in to change notification settings - Fork 28
Examples
davidressman edited this page Mar 21, 2013
·
1 revision
This is an example program using the library to submit a job and a job array. To submit, run python example.py /bin/sleep 1
.
import drmaa
import os
from sys import argv, exit
from time import sleep
from pprint import pprint
NBULKS = 1
JOB_CHUNK = 3
OPATH=":"+drmaa.JobTemplate.HOME_DIRECTORY+'/DRMAA_JOB_OUT'
def init_job_template(jt, path, args, as_bulk_job):
jt.workingDirectory = drmaa.JobTemplate.HOME_DIRECTORY
jt.environment = {'a': 'b', 'c':'d',}
jt.remoteCommand = path
jt.args = args
jt.joinFiles=True
if as_bulk_job:
jt.outputPath=OPATH+'.'+drmaa.JobTemplate.PARAMETRIC_INDEX
else:
jt.outputPath=OPATH
return jt
def main():
if len(argv) < 2:
print "usage: example.py <path-to-job> <arguments>"
exit(1)
job_path=argv[1]
s=drmaa.Session()
s.initialize()
# submit some bulk jobs
jt=init_job_template(s.createJobTemplate(), job_path, argv[2:], True)
all_jobids = []
for i in range(NBULKS):
all_jobids += s.runBulkJobs(jt, 1, JOB_CHUNK, 1)
sleep(1)
print "submitted bulk jobs with jobids:"
pprint(all_jobids)
# submit some sequential jobs
s.deleteJobTemplate(jt)
del jt
jt=init_job_template(s.createJobTemplate(), job_path, argv[2:], False)
for i in range(NBULKS):
all_jobids.append(s.runJob(jt))
sleep(1)
s.synchronize(all_jobids,
drmaa.Session.TIMEOUT_WAIT_FOREVER,
False)
print "synchronized with all jobs"
for jid in all_jobids:
print '-' * 76
info=s.wait(jid, drmaa.Session.TIMEOUT_WAIT_FOREVER)
print """\
id: %(jobId)s
exited: %(hasExited)s
signaled: %(hasSignal)s
with signal (if signaled): %(terminatedSignal)s
dumped core: %(hasCoreDump)s
aborted: %(wasAborted)s
resource usage:
%(resourceUsage)s
""" % info._asdict()
if __name__=='__main__':
main()