我有使用matplotlib pcolormesh生成大量png图像的代码 . 图像是高分辨率的,因此需要一段时间才能绘制图像 . 我试图尽可能地减少绘图时间而不影响图形的干净外观,但每个图像仍然需要大约15到20秒才能保存到文件中 .

问题是,此代码必须在操作设置中工作,当脚本在crontab上运行时(每当新数据可用时),每隔约5分钟生成一次图像 . 对于仅1个变量,我通过循环包含我的不同 Map 域的边界的字典来生成6个(或更多不同区域)的图像:

# Using the 'Agg' backend because this will be run automatically 
# Not sure if there are any faster alternatives to Agg

import matplotlib
matplotlib.use('Agg')

# The map domains used:
domains = {'neweng': [40.7, 48, -80, -66], 'midatl': [35.5, 45, -87.5, -70]}

# Pull data from a file and do some calculations 

# Now we plot for each domain 
for region, constraint in domains.iteritems():
# region is name of domain, constraints are the values of lat/lon min and max

    mH = Basemap(projection='mill', llcrnrlon=constraint[2], \
        urcrnrlon=constraint[3], llcrnrlat=constraint[0], \
        urcrnrlat=constraint[1], resolution='h')

    # Simplified version of plotting
    plt.figure(figsize=[15,12])
    mH.pcolormesh(lons, lats, Twf, cmap=my_cmap, shading='gouraud')
    mH.drawcoastlines()
    mH.drawcountries()
    mH.drawstates()
    mH.drawcounties()

    # Do some other stuff

    plt.savefig('/home/kschneider/Documents/wetbulb/Images/' + region + fcst_hr_str, bbox_inches='tight')

我已经阅读过如何在python中使用子处理来同时绘制多个图像,同时使用多个核心,但我不确定如何将它应用于我的情况 . 在这种情况下,我想同时绘制多个“域” .

另外,我欢迎任何其他关于如何提高速度的建议 .

输出代码:Example output