複数のスレッド/コアで1つのフォルダーのラスターを保存および変更しようとすると、INFADIエラーが発生することがわかりました。出力用に各タスクにサブフォルダーを割り当てると、問題が解決するようです。この問題は、ラスターに関連付けられた周辺ファイル(「info」フォルダーなど)に対する複数の読み取り/書き込みに関係していると思います。私は現在、次の予防策も採用しています。
import arcpy,multiprocessing,random
def run(foo,c):
tempFolder = os.path.join("Z:/temp/",'temp_%s'%(str(c)))
if not os.path.exists(tempFolder): os.mkdir(tempFolder)
arcpy.env.scratchWorkspace = tempFolder
arcpy.env.Workspace = tempFolder
# create unique object in memory, run task, then delete unique object in memory
tempMem = str(rnd)
try:arcpy.Delete_management(tempMem)
except:pass
<tasks> #output to appropriate subfolder
arcpy.Delete_management(tempMem)
if __name__ == '__main__':
cores = 3
pool = multiprocessing.Pool(cores)
count = 0
for foo in bar:
pool.apply_async(run,(foo,c))
count +=1
pool.close()
pool.join()