Versions Compared

    Key

    • This line was added.
    • This line was removed.
    • Formatting was changed.
    Comment: Published by Scroll Versions from this space and version 7.5-0

    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
    languagepython
    #!/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
    • OS X macOS -       /Application/pfx/qube/examples
    • Linux -       /usr/local/pfx/qube/examples

     

    Continue to Basic python job submission II. Frames