Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
提高在Python中创建HTML表格单元格的速度_Python_Html_Performance_List_Html Table - Fatal编程技术网

提高在Python中创建HTML表格单元格的速度

提高在Python中创建HTML表格单元格的速度,python,html,performance,list,html-table,Python,Html,Performance,List,Html Table,我继承了一些Python代码,用于创建最多19列宽5000行的表。最初,在屏幕上绘制表格需要9秒,但要6秒 现在我想进一步优化它。毫不奇怪,我发现瓶颈是创建单元格内容的部分。代码是: sText += '<td align="middle">%s</td>' % sCellContents 然后在末尾连接: sText = ''.join(lText) 但是这没有什么区别。您应该尝试一下io.StringIO。相反,它是一个流,可能会提高性能。像这样使用它: s_te

我继承了一些Python代码,用于创建最多19列宽5000行的表。最初,在屏幕上绘制表格需要9秒,但要6秒

现在我想进一步优化它。毫不奇怪,我发现瓶颈是创建单元格内容的部分。代码是:

sText += '<td align="middle">%s</td>' % sCellContents
然后在末尾连接:

sText = ''.join(lText)

但是这没有什么区别。

您应该尝试一下
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()
s_text_stream=io.StringIO()
s_text_stream.write(“%s”%sCellContents)
s_text_stream.seek(0)
s_text=s_text_stream.read()
您可以尝试使用模板,而无需对现有代码进行太多修改

from mako.template import Template

t = Template('<td align="middle">${content}</td>')

for cell in sCellContents:
    t.render(content=cell)
从mako.template导入模板
t=模板(“${content}”)
对于sCellContents中的单元格:
t、 渲染(内容=单元格)

如果有什么不同的话,看看会有什么不同是非常有趣的。

你有没有尝试过像Mako或Jinja2这样的模板引擎?@MFB-没有,部分原因是我不熟悉这些其他选项,部分原因是我不想对遗留代码进行重大的(?)更改。很公平。。。但是,请花2分钟阅读本页的前几段:“在屏幕上绘制表格花了9秒钟”出于好奇,您是如何确定“生成HTML”而不是“浏览器端”的瓶颈的?你的HTML的字节大小是多少?@Wikis有你的代码吗?谢谢,我试过了,但没有得到任何输出,我会继续尝试。很抱歉,我不得不放弃这个。添加
s_text_stream.seek(0)s_text=s_text_stream.read()
花费了超过20秒的加载时间。抱歉,我花了一些时间尝试设置,但这并不像我希望的那样简单。
from mako.template import Template

t = Template('<td align="middle">${content}</td>')

for cell in sCellContents:
    t.render(content=cell)