我有一段用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)
答案 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
是一项昂贵的操作,您可能最好在列上循环,这不是很整洁。