Ironpython代码执行时间太长?

时间:2016-01-14 13:27:24

标签: python performance ironpython

我有一段用Iron Python编写的代码,它从SpotFire中的表中读取数据并在JSON对象中序列化。被执行需要很长时间。请提供替代方案。

import clr
import sys
clr.AddReference('System.Web.Extensions')
from System.Web.Script.Serialization import JavaScriptSerializer
from Spotfire.Dxp.Data import IndexSet
from Spotfire.Dxp.Data import DataValueCursor

rowCount = MyTable.RowCount
rows = IndexSet(rowCount,True)
cols = MyTable.Columns
MyTableData=[]

for r in rows:
 list={}
 item={}
 for c in cols:
  item[c.Name] = c.RowValues.GetFormattedValue(r)
  list['MyData']=item
 MyTableData.append(list)

json=JavaScriptSerializer(MaxJsonLength=sys.maxint).Serialize(MyTableData)

1 个答案:

答案 0 :(得分:0)

如果您没有为每列调用list['MyData']=item,您的代码会更快。你只需要调用一次。

您也可以使用list and dictionary comprehensions,而不是附加或查找每个值的键。

MyTableData = [{'MyData': {column.Name: column.RowValues.GetFormattedValue(row)
                           for column in cols}}
               for row in rows]

如果column.RowValues是一项昂贵的操作,您可能最好在列上循环,这不是很整洁。