My code is below. As a single script there is no pause at the end of the processing as there is with using os.spawnv... I am using the P_WAIT value, and wonder if it is responsible for the extra time at the end of each iteration. Could it take longer for the processing to be "successful" when run under os.spawnv? Is there a way to manually send a "success" exit code back to os.spawnv, rather than waiting for it? Thanks.
Main script: # Import subprocess modules import os, sys, win32com.client # Define arguments for subprocess pyPath = "C:\\Python21\\python.exe" contourScript = "C:\\Ian\\Python scripts\\subProcess2.py" workspace = "D:\\GIS\\Test" # Get a list of IMG files in the workspace for Contouring filenames = os.listdir(workspace) filenames = [filename.lower() for filename in filenames if (filename[-4:].lower() == ".img" and filename[0:2] != "h_" )] for filename in filenames: # Define filenames print "Filename is " + filename inImg = workspace + "\\" + filename outContour50 = workspace + "\\contour50_" + filename[:-4] + ".shp" outContour100 = workspace + "\\contour100_" + filename[:-4] + ".shp" outContour200 = workspace + "\\contour200_" + filename[:-4] + ".shp" outContour500 = workspace + "\\contour500_" + filename[:-4] + ".shp" # Create parameter list parameterList = [] # First parameter is the name of the Python executable parameterList.append('python.exe') # Second parameter is the full path of the Python script parameterList.append(contourScript) # The following parameters are the arguments for the Batch script parameterList.append(inImg) parameterList.append(outContour50) parameterList.append(outContour100) parameterList.append(outContour200) parameterList.append(outContour500) # Run subprocess os.spawnv(os.P_WAIT, pyPath, parameterList) print "All done!" Secondary script: # Import system modules import sys, win32com.client # Create the geoprocessor object gp = win32com.client.Dispatch("esriGeoprocessing.GpDispatch.1") # Confirm license availability print "ArcInfo license is " + str(gp.CheckProduct("ArcInfo")) gp.SetProduct("ArcInfo") gp.CheckOutExtension("Spatial") # Set arguments to be passed to main script inImg = sys.argv[1] outContour50 = sys.argv[2] outContour100 = sys.argv[3] outContour200 = sys.argv[4] outContour500 = sys.argv[5] badImgList = [] try: # For each IMG file, contour at 50, 100, and 200 meter intervals gp.Contour_sa(inImg, outContour50, "50", "0", "1") print "Successfully contoured at 50 meter interval!" gp.Contour_sa(inImg, outContour100, "100", "0", "1") print "Successfully contoured at 100 meter interval!" gp.Contour_sa(inImg, outContour200, "200", "0", "1") print "Successfully contoured at 200 meter interval!" gp.Contour_sa(inImg, outContour500, "500", "0", "1") print "Successfully contoured at 500 meter interval!" except: badImgList.append(filename) print filename + " is no good! It's been added to the list!" -- http://mail.python.org/mailman/listinfo/python-list