【发布时间】:2012-08-15 03:17:14
【问题描述】:
我想使用matplotlib 来生成一些PDF 文件。我的主要问题是 matplotlib 很慢,每个文件需要 0.5 秒。
我试图弄清楚为什么需要这么长时间,我编写了以下测试程序,它只是将一条非常简单的曲线绘制为 PDF 文件:
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
X = range(10)
Y = [ x**2 for x in X ]
for n in range(100):
fig = plt.figure(figsize=(6,6))
ax = fig.add_subplot(111)
ax.plot(X, Y)
fig.savefig("test.pdf")
但即使是这么简单的事情也需要很多时间:100 个 PDF 文件总共需要 15-20 秒(现代 Intel 平台,我尝试过 Mac OS X 和 Linux 系统)。
有什么技巧和技术可以用来加速 matplotlib 中的 PDF 生成吗?显然我可以在多核平台上使用多个并行线程,但我还能做些什么吗?
【问题讨论】:
-
如您所见,我没有答案,但我有适当的参考资料。这里有一张开发票:github.com/matplotlib/matplotlib/issues/992,这里有一个邮件列表问题存档:sourceforge.net/mailarchive/…
-
我试图用一个简单的绘图创建一个 pdf 文件(使用数组进行绘图),我花了 72ns 来创建一个文件。你依赖你在这里创建的列表吗?如果没有,我可以发布我的解决方案。
-
@PateToni:这里输入格式无关紧要,数据转换比绘图快很多。 :)
-
@JukkaSuomela:对不起,但我发现,我在 Windows 机器上的 python 版本有点坏了。它没有告诉我正确的时机。 72ns 不是真的。我的笔记本上没有任何加速。根据分析,瓶颈位于 matplotlib 内部。只需尝试一些替代方案(PyCha,...)或搜索更快的机器来工作 =)
-
stackoverflow.com/questions/4690585/… 是您正在寻找的答案吗?
标签: python matplotlib pdf-generation