由于这种情况下的限制是对plt.savefig()的调用,因此无法对其进行大量优化.在内部,图形从头开始呈现,需要一段时间.可能减少要绘制的顶点数量可能会减少一点时间.
在我的机器上运行代码的时间(Win 8,i5,4核3.5GHz)是2.5秒.这似乎并不太糟糕.通过使用Multiprocessing可以获得一点改进.
关于多处理的注意事项:在多处理中使用pyplot的状态机应该可以正常工作,这似乎令人惊讶.但确实如此.
在这种情况下,由于每个图像都基于相同的图形和轴对象,因此甚至不必创建新的图形和轴.
我刚刚为你的情况修改了一个answer I gave here,使用多处理和4个核心上的5个进程,总时间大致减半.我附加了一个显示多处理效果的条形图.
import numpy as np
#import matplotlib as mpl
#mpl.use('agg') # use of agg seems to slow things down a bit
import matplotlib.pyplot as plt
import multiprocessing
import time, os
def make_plot(d):
start = time.clock()
x,y=d
#using aspect in this way causes a warning for me
#aspect = np.random.random(1)+y/2.0-x
xrand = np.random.random(2)*x
xlim = [min(xrand), max(xrand)]
yrand = np.random.random(2)*y
ylim = [min(yr