Arn*_*aud 2 revit-api revitpythonshell pyrevit
我有一个非常"普遍"的问题.我正在使用Revit API(使用python)进行开发,我有时会观察到Revit会话在我的测试和试验期间变慢(Revit保持打开的时间越长,它看起来就越多).它没有达到真正有问题的程度,但它让我无论如何都要考虑它.
所以,由于我没有编程背景,我很确定我的代码充满了真正"非正统"的东西,可能会好得多.
我是否可以遵循一些基本的"技巧和窍门"(我的意思是,与Revit API相关)以帮助提高代码执行速度?或者我应该说:帮助减少内存使用?
例如,我已经阅读了可用的'Dispose'方法,特别是在使用Transactions时(例如:http://thebuildingcoder.typepad.com/blog/2012/09/disposal-of-revit-api-objects). html),但最后我不是很清楚这是否真的非常重要(此外,因为我使用的是Python,并且不知道在哪里让我参与讨论使用"使用"或不)?
我应该'弃置'一切吗?;)
除了'Dispose'方法,还有别的吗?
非常感谢,Arnaud.
基本:
好的,我们来谈谈几个要点:
问题:
现在谈到这个问题的核心:python是一种面向对象的编程语言,而IronPython创建objects(在概念上类似于Revit中的Elements),从变量到类的方法,再到函数和其他所有东西.这意味着当它们不再使用时,需要收集所有这些对象.
当使用python作为程序的脚本语言时,通常有一个python Engine执行所有用户输入.
但是,Revit没有命令提示符和关联的python引擎.因此,每次在Revit中运行脚本时,都会创建一个新引擎来执行程序并在最后终止.
这大大增加了GC要收集的未使用内存量.
解:
我是pyRevit的创建者和维护者,这个问题在pyRevit v4.2中得到了解决
解决方案是LightweightScopes = true在创建IronPython引擎时设置,这将强制引擎创建较小的对象.这大大减少了IronPython使用的内存,并增加了用户体验Revit性能下降的时间.
| 归档时间: |
|
| 查看次数: |
455 次 |
| 最近记录: |