gpt4 book ai didi

python - matplotlib:更快的 PDF 生成?

转载 作者:太空狗 更新时间:2023-10-29 21:47:07 49 4
gpt4 key购买 nike

我想使用 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 秒(现代英特尔平台,我尝试了 Mac OS X 和 Linux 系统)。

在 matplotlib 中有什么技巧和技巧可以用来加速 PDF 生成吗?显然我可以在多核平台上使用多个并行线程,但我还能做些什么吗?

最佳答案

如果可行,您可以使用多进程来执行此操作(假设您的机器上有多个内核):

注意:以下代码将在您机器上的当前目录中生成 40 个 pdf

import matplotlib.pyplot as plt

import multiprocessing


def do_plot(y_pos):
fig = plt.figure()
ax = plt.axes()
ax.axhline(y_pos)
fig.savefig('%s.pdf' % y_pos)

pool = multiprocessing.Pool()

for i in xrange(40):
pool.apply_async(do_plot, [i])

pool.close()
pool.join()

它的扩展性并不完美,但通过在我的 4 核(带超线程的双核)上执行此操作,我得到了显着的提升:

$> time python multi_pool_1.py 
done

real 0m5.218s
user 0m4.901s
sys 0m0.205s

$> time python multi_pool_n.py
done

real 0m2.935s
user 0m9.022s
sys 0m0.420s

我确信 mpl 的 pdf 后端有很大的性能改进空间,但这不在您所追求的时间范围内。

HTH,

关于python - matplotlib:更快的 PDF 生成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12026711/

49 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com