【发布时间】:2010-10-07 19:50:04
【问题描述】:
for i in vr_world.getNodeNames():
if i != "_error_":
World[i] = vr_world.getChild(i)
vr_world.getNodeNames() 返回一个巨大的列表,vr_world.getChild(i) 返回一个特定类型的对象。
这需要很长时间才能运行,有没有办法让它更有效率?在此之前,我已经看到单行循环应该更快。想法?
【问题讨论】:
-
.getNodeNames()仅在您进入for循环时运行一次,因此如果需要一段时间,请修复它(如果可能)。不管你怎么做(例如列表推导——你提到的单行代码),大概你都必须得到函数以某种方式启动的数据。 -
您是否通过分析器运行代码以找出其中的 部分 是慢的?
-
是的,我认为这里没有任何问题。我将不得不探索 getNodeNames 背后的功能
-
@Daenyth:在 Python 标准库中是否有这样的功能?我可能只是使用
time.time()'s...虽然在这个简单的python代码和两个黑盒函数上,它可能是什么并没有太多的争论。 -
@relima:看看wiki.python.org/moin/PythonSpeed/PerformanceTips#ProfilingCode。另外,如果您可以发布您正在调用的函数的定义,我们也许能够确定问题
标签: python optimization