Two things I have been doing since v9.1 to make Python-based parallel overlay processes run (not sure if I "need" to do them in v9.3.1 and/or v10.0 still, but it doesn't seem to hurt).1) Write each result to seperate FGDBs (in your case, named results_1, results_2, etc). Another option that might work is to write the output to the in_memory workspace, and have a try/except statement that attempts to copy the FC to a single FGDB, if it fails, wait 5 sec and try again - maybe try up to 10 times or so... Something like:
tryCount = 0
successFlag = False
while tryCount <= 10:
try:
gp.CopyFeatures_managment(blah, blah)
successFlag = True
break
except:
time.sleep(5)
tryCount = tryCount + 1
if successFlag == False:
print "Failed!";sys.exit()
2) In the child processes, reset the TEMP and TMP system variables to unique directories. For example:import time, os, shutil
newTempDir = r"C:\temp\gptmpenvr_" + time.strftime('%Y%m%d%H%M%S')
os.mkdir(newTempDir)
os.environ["TEMP"] = newTempDir
os.environ["TMP"] = newTempDir
This rediverts the overlaytiles.txt file to seperate folders so each process isn't trying to write to the same file.