python - PPTX-Python `insert_chart` 速度逐渐减慢

标签 python performance python-pptx

我们有一个应用程序创建包含 1000 多张幻灯片的大型 pptx,并且我们正在使用 python-pptx 库。

我们遇到的问题是,随着演示文稿的增长,向其中添加元素和/或图表会变得更慢。

from pptx import Presentation
from pptx.chart.data import CategoryChartData
from pptx.enum.chart import XL_CHART_TYPE
from pptx.util import Inches


SLD_LAYOUT_TITLE_AND_CONTENT = 1

prs = Presentation()

slide_layout = prs.slide_layouts[SLD_LAYOUT_TITLE_AND_CONTENT]
for idx in range(2000):
    slide = prs.slides.add_slide(prs.slide_layouts[5])
    
    chart_data = CategoryChartData()
    chart_data.categories = ['East', 'West', 'Midwest']
    chart_data.add_series('Series 1', (19.2, 21.4, 16.7))

    x, y, cx, cy = Inches(2), Inches(2), Inches(6), Inches(4.5)
    slide.shapes.add_chart(
    XL_CHART_TYPE.COLUMN_CLUSTERED, x, y, cx, cy, chart_data
    )

    print(str(idx))

prs.save('test.pptx')

不知道有没有人遇到过这种情况?似乎 pptx-python 必须在演示文稿内部查找,从而使其每次迭代速度变慢。或者这是我们使用 python 循环并将变量加载到内存中的方式?

最佳答案

这在图表和幻灯片部件名称分配中似乎是 O(N^2) 行为。更多详细信息请参见此处的 GitHub 问题线程:https://github.com/scanny/python-pptx/issues/644#issuecomment-685056215

关于python - PPTX-Python `insert_chart` 速度逐渐减慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63683594/

相关文章:

php - 重用 php 类变量

python - 有什么方法可以告诉 selenium 在某个时候不要执行 js?

Python - 所有内置装饰器是什么?

php - 有没有更快的方法从多个表中获取信息?

python - 合并单元格在 Python PPTx 中不起作用

Python-pptx: “Show legend overlapping the chart”

python - 获取具有给定总和的所有子集的递归程序包括重复

bash - BASH 中更快的文本数据处理

c++ - OpenMP 临界区带来意想不到的性能提升

python-pptx:如何重新定位图片占位符?