Arcpy 脚本是快还是慢?
Arcpy script was fast now slow?
问题几乎概括了它。我今天早些时候在 PyCharm 中有以下脚本 运行ning:
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 分钟class,还有几百个要 运行 完成。在一天中的某个时刻,该进程挂起并且不再生成任何输出,所以我将其终止并重新开始(认为这是一个 pyCharm 问题)。当我重新开始时,每个功能 class 突然需要 ~1 小时以上来完成完全相同的过程。我在 WingIDE 中尝试了相同的过程,但问题仍然存在。我已经重新启动了所有程序,运行只在这台机器上执行了这个进程。想法?我需要在这里牺牲牲畜吗?为 winRar 付费?
有没有其他人遇到过 运行 脚本的问题? 运行前几次还好,但突然间,没有明显的原因,它需要大幅减速?
好的。由于这是一个有效的问题,所以不确定这是否值得它获得否决票,但对于那里的所有 -1:这是一个合法的问题,我能够在多台不同的机器上在 arcpy 中一致地重现。因此,如果您一直试图弄清楚 wtf 是如何处理 arcpy 脚本的 高度 可变处理时间,请继续阅读。
事实证明,TabulateArea
函数发生了合法的内存泄漏问题。尝试在 for
循环中添加这样的内容:
arcpy.env.workspace = 'in_memory' #Outside the loop
arcpy.Delete_management("in_memory") #after the function completes
希望这对某人有所帮助。想弄清楚这个问题让我发疯了好几天。
问题几乎概括了它。我今天早些时候在 PyCharm 中有以下脚本 运行ning:
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 分钟class,还有几百个要 运行 完成。在一天中的某个时刻,该进程挂起并且不再生成任何输出,所以我将其终止并重新开始(认为这是一个 pyCharm 问题)。当我重新开始时,每个功能 class 突然需要 ~1 小时以上来完成完全相同的过程。我在 WingIDE 中尝试了相同的过程,但问题仍然存在。我已经重新启动了所有程序,运行只在这台机器上执行了这个进程。想法?我需要在这里牺牲牲畜吗?为 winRar 付费?
有没有其他人遇到过 运行 脚本的问题? 运行前几次还好,但突然间,没有明显的原因,它需要大幅减速?
好的。由于这是一个有效的问题,所以不确定这是否值得它获得否决票,但对于那里的所有 -1:这是一个合法的问题,我能够在多台不同的机器上在 arcpy 中一致地重现。因此,如果您一直试图弄清楚 wtf 是如何处理 arcpy 脚本的 高度 可变处理时间,请继续阅读。
事实证明,TabulateArea
函数发生了合法的内存泄漏问题。尝试在 for
循环中添加这样的内容:
arcpy.env.workspace = 'in_memory' #Outside the loop
arcpy.Delete_management("in_memory") #after the function completes
希望这对某人有所帮助。想弄清楚这个问题让我发疯了好几天。