A system comprising: a storage device configured to store a batch including a plurality of jobs; and a processor in communication with the storage device, the processor including a plurality of processing elements and being configured to: select a job from a batch; determine an estimated processing time for the job; compare the estimated processing time with a range of values associated with a first one of the processing elements that is not currently processing a job; and if the estimated processing time falls within the range of values: assign the job to the first processing element; and process the job using the first processing element; or if the estimated processing time does not fall within the range of values associated with the first processing element: compare the estimated processing time with ranges of values associated with one or more of the other processing elements that are not currently processing a job; and process the job using the one of the one or more other processing elements whose range of values includes the estimated processing time; characterized in that each range of values is between zero and a preset positive threshold value, the preset positive threshold values being different for each processing element. a storage device configured to store a batch including a plurality of jobs; and a processor in communication with the storage device, the processor including a plurality of processing elements and being configured to: select a job from a batch; determine an estimated processing time for the job; compare the estimated processing time with a range of values associated with a first one of the processing elements that is not currently processing a job; and if the estimated processing time falls within the range of values: assign the job to the first processing element; and process the job using the first processing element; or if the estimated processing time does not fall within the range of values associated with the first processing element: compare the estimated processing time with ranges of values associated with one or more of the other processing elements that are not currently processing a job; and process the job using the one of the one or more other processing elements whose range of values includes the estimated processing time; select a job from a batch; determine an estimated processing time for the job; compare the estimated processing time with a range of values associated with a first one of the processing elements that is not currently processing a job; and if the estimated processing time falls within the range of values: assign the job to the first processing element; and process the job using the first processing element; assign the job to the first processing element; and process the job using the first processing element; or if the estimated processing time does not fall within the range of values associated with the first processing element: compare the estimated processing time with ranges of values associated with one or more of the other processing elements that are not currently processing a job; and process the job using the one of the one or more other processing elements whose range of values includes the compare the estimated processing time with ranges of values associated with one or more of the other processing elements that are not currently processing a job; and process the job using the one of the one or more other processing elements whose range of values includes the estimated processing time; characterized in that each range of values is between zero and a preset positive threshold value, the preset positive threshold values being different for each processing element.