To begin we will go through a simple job submission. In this example, we will submit a job that runs a single command (in this case, the command "hostname") on one worker. This is the simplest form of job submission.
Below is the code with commented explanations of its contents
#!/usr/bin/python # Below are required imports for the script to run import os, sys # The next few lines attempt to import the Qube API. If the path to the qb module # is not in $PATH or $PYTHONPATH, we will attempt to find it by looking in known # locations try : import qb except ImportError: if os.environ.get( "QBDIR" ): qbdir_api = os.path.join(os.environ.get( "QBDIR" ), "api" , "python" ) for api_path in (qbdir_api, "/Applications/pfx/qube/api/python/" , "/usr/local/pfx/qube/api/python/" , "C:\\Program Files\\pfx\\qube\\api\\python" , "C:\\Program Files (x86)\\pfx\\qube\\api\\python" ): if api_path not in sys.path and os.path.exists(api_path): sys.path.insert( 0 ,api_path) try : import qb except : continue break # this should throw an exception if we've exhuasted all other possibilities import qb # Below is the main function to run in this script def main(): # Below creates an empty dictionary to be filled by the following lines of code job = {} # Below defines the name of the Qube! job. This is the name that will be # displayed in the GUI and through the command line tools job[ 'name' ] = 'python test job' # Below defines how many Instances/subjobs the job is to spawn. Because we # will be running only a single command, there is no need to request more than 1. job[ 'cpus' ] = 1 # Below defines the internal Qube! jobtype to be used to execute the job. # 'cmdline' tells Qube that on the backend, we will execute a single command line # command. This will be the same as opening a terminal/command prompt and typing # out a command. job[ 'prototype' ] = 'cmdline' # The below parameters are explained further in the "Job submission with job # package explained" page package = {} package[ 'cmdline' ] = 'hostname' job[ 'package' ] = package # Below creates an empty list filled by the following lines of code. listOfJobsToSubmit = [] # Below evaluates the jobs to be submitted and adds the to the above list listOfJobsToSubmit.append(job) # Below calls the list of jobs to be submitted and then prints the job IDs for each # While it is not strictly necessary that one submits a list of jobs, it is a good # habit to start, so we will only submit lists of jobs. It is, however, perfectly # acceptable to qb.submit(job) listOfSubmittedJobs = qb.submit(listOfJobsToSubmit) for job in listOfSubmittedJobs: print job[ 'id' ] # Below runs the "main" function if __name__ = = "__main__" : main() sys.exit( 0 ) |
This example and others like it can be found in:
- Windows - C:\Program Files\pfx\qube\examples
- OS X - /Application/pfx/qube/examples
- Linux - /usr/local/pfx/qube/examples
Continue to Basic python job submission II. Frames