Rhino3D犀牛中文网

标题: ghpython如何清理内存 [打印本页]

作者: dingjaitong    时间: 2017-7-15 14:30
标题: ghpython如何清理内存
本帖最后由 dingjaitong 于 2017-7-17 09:53 编辑

通过调用ghpythonlib.components里的函数运算出了一些物体,以Line为例,第一次运算后print其返回的数据是

[Python] 纯文本查看 复制代码
[<Rhino.Geometry.Line object at 0x000000000000002F [3.61671943942474,-156.901020123432,0,302.430401181408,-121.915204222849,0]>][<Rhino.Geometry.Line object at 0x0000000000000030 [-10.1673922729791,-84.7959481966298,0,302.430401181408,-121.915204222849,0]>]


第二次运算后

[Python] 纯文本查看 复制代码
[<Rhino.Geometry.Line object at 0x0000000000000031 [3.61671943942474,-156.901020123432,0,302.430401181408,-121.915204222849,0]>][<Rhino.Geometry.Line object at 0x0000000000000032 [-10.1673922729791,-84.7959481966298,0,302.430401181408,-121.915204222849,0]>]


因为运算后内存地址都会增加,只有重启rhino才会恢复到第一次的内存地址,而且每次运算后速度都会比前一次慢,我猜想是不是每次运算前并没有将内存清空,还保留着上次的结果
所以我使用了gc.collect()手动回收内存,但仍无果
使用del清理使用完的变量,也无果

烦请坛内大神指点迷津,我是什么地方出了差错



作者: 筑梦NARUTO    时间: 2017-7-15 14:52
不需要手动清理啊,那个算出来不一样只是内存的存放地址变了
作者: dingjaitong    时间: 2017-7-15 15:33
筑梦NARUTO 发表于 2017-7-15 14:52
不需要手动清理啊,那个算出来不一样只是内存的存放地址变了

那请问是什么地方导致它每算一次就慢一些呢?
作者: 筑梦NARUTO    时间: 2017-7-16 10:29
本帖最后由 筑梦NARUTO 于 2017-7-16 11:10 编辑

我这里运行你的代码感觉不出来慢啊
而且写代码少调用GH的电池啊,能用rhinocommon解决的就用rhinocommon解决。GH电池本来就是开发者开发的一个功能,做了很多判断啥的,用rhinocommon说不定一句代码就搞定了。而且你也不知道调用GH电池会不会有性能上的bug,反正我没遇到过这种问题。


作者: dingjaitong    时间: 2017-7-16 10:47
好嘞,谢谢月神
作者: Jorin    时间: 2017-7-16 10:57
月月正解!@筑梦NARUTO




欢迎光临 Rhino3D犀牛中文网 (https://www.rhino3d.asia/) Powered by Discuz! X3.3