我继承了一些Python代码,用于创建最多19列宽5000行的表。最初,它在屏幕上绘制了9秒钟,但是I managed to reduce that到 6秒。
现在我想进一步优化它。我已经看到,毫无疑问,瓶颈是创建单元格内容的部分。代码是:
sText += '<td align="middle">%s</td>' % sCellContents
其中sText
和sCellContents
是字符串。 (格式化单元格内容的样式可能会有所不同。)
如果删除除<td></td>
标签以外的所有内容,速度将保持不变,这意味着样式对性能没有影响。但是如果我删除这些标签(从而将内容放在桌子外面),屏幕会以三秒显示(当然,格式化很糟糕)。
有没有办法在保留格式的同时优化该行?
我已经尝试过使用列表:
lText.append(sCellContents)
然后在最后加入:
sText = ''.join(lText)
但这没有任何区别。
答案 0 :(得分:0)
您应该尝试io.StringIO
。它取而代之的是流,可能会提高性能。像这样使用它:
s_text_stream = io.StringIO()
s_text_stream.write('<td align="middle">%s</td>' % sCellContents)
s_text_stream.seek(0)
s_text = s_text_stream.read()
答案 1 :(得分:0)
您可以尝试使用Mako模板,而无需对现有代码进行太多修改。
from mako.template import Template
t = Template('<td align="middle">${content}</td>')
for cell in sCellContents:
t.render(content=cell)
如果有的话,看看会有什么不同,这将是非常有趣的。