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 Block |
---|
...
Code Block | ||
---|---|---|
| ||
#!/usr/bin/pythonenv python3 # 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 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 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 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 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
...
- macOS -
/Application/pfx/qube/examples
- Linux -
/usr/local/pfx/qube/examples
Continue to Basic python job submission II. Frames