问题几乎可以总结一下。我今天早些时候在PyCharm中运行了以下脚本:
rasterfolder = "F:/1_Raster_Processing/Classified/"
vectorfolder = "H:/Output/SplitShapes/"
tablefolder = "H:/Output/Split_Tables_3/"
import arcview
import arcpy
from arcpy.sa import *
arcpy.CheckOutExtension("spatial")
arcpy.env.workspace = vectorfolder
flist = arcpy.ListFeatureClasses()
for f in flist:
TabulateArea(f,"FID",rasterfolder + "KNN100_" + f[:-6] + ".tif","Value",tablefolder + f[:-4] + ".dbf",0.25)
这需要大约4分钟的功能课程,并且有几百个要完成。在一天中的某个时刻,进程挂起并且没有产生任何更多的输出,所以我杀了它并重新开始(认为这是一个pyCharm问题)。当我重新开始时,每个要素类突然花费约1小时+来完成相同的过程。我在WingIDE尝试了相同的过程,但我仍然遇到了这个问题。我重新启动了所有东西,除了这台机器上的这一个进程外什么都没有运行。思考?我需要在这里牺牲一种稗动物吗?支付winRar?
是否有其他人在运行脚本时遇到问题;它在前几次运行良好,但突然间,并且没有明显的原因,它需要大幅减速?
答案 0 :(得分:1)
确定。不确定这是值得的,因为它是一个有效的问题,但是对于所有的-1在那里:这是一个合法的问题,我能够在几个不同的机器上一致地在arcpy中重现。因此,如果你一直试图找出wtf正在进行arcpy脚本的高度变量处理时间,请继续阅读。
事实证明,TabulateArea
函数发生了合法的内存泄漏问题。尝试在for
循环中添加类似的内容:
arcpy.env.workspace = 'in_memory' #Outside the loop
arcpy.Delete_management("in_memory") #after the function completes
希望这有助于某人。几天来试图解决这个问题,开车送我疯狂。