python - 玛雅 python 内存刷新?

标签 python maya

我正在运行一个 maya python 脚本,该脚本贯穿整个场景并减少网格对象的多边形数量(如果它超过特定范围)。

这在小场景上运行良好,但当我在数千个网格对象上运行它时,我机器的内存使用量会越来越多,直到 maya 在物理内存使用量的 80% 左右卡住。

我的问题是,除了我已有的内存刷新之外,我是否可以将某种内存刷新添加到将“重置”内存使用的 python 循环中?或者这是不可能的,因为线程仍在运行?

我正在运行这个:

selectedObjects = ls (sl=True, fl=True)
for obj in selectedObjects:
    reduceMesh(obj) # my function
    cmds.flushUndo()
    cmds.clearCache( all=True )
    cmds.DeleteHistory()

添加 flush undo 似乎有点帮助,但我仍然看到内存上升......

最佳答案

您可以尝试使用 cmds.undoInfo 减少 Maya 撤消缓存的大小或完全关闭撤消队列。 .您需要尝试一些策略来查看真正的罪魁祸首是什么——但最终您要更改数千个网格的内容,因此撤消堆栈将非常庞大,因为您实际上需要同时维护旧的和数千个网格的新状态。

如果这变得不可能,您可以控制大场景,将单个对象保存到不同的文件中,然后将它们引用回原始场景。然后您可以单独处理所有这些文件。这会产生一些性能开销,但它可能会让您完成这项工作。

关于python - 玛雅 python 内存刷新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34019913/

相关文章:

python - "Lazy"Python中的列表项评估

python - 将数据框与排序标准合并

python - 如何从 Maya 中启动 Nuke?

tensorflow - 我可以在 Maya 和 Blender 中导入 tensorflow 和 keras

python - Numpy 裁剪二维数组到非 NaN 值

Python - 任何括号的正则表达式清理

python - 如何使用 boto3 仅检索 S3 中的 last_modified key

python - 玛雅Python : Lock transforms of a keyframe

python - Maya Python...使用 maya.cmds 编码时任意精度的解决方法

python - 如何使用Python在Maya中设置目录?目前使用 PyQt4 但欢迎任何建议