python加快绘图速度_Python高效批量绘图方法

在数值预报后处理中经常需要批量出图,而基于matplotlib的图形渲染速度较慢,而提高出图的速度通常可通过两个方面来解决:多进程进行绘图

图形渲染调整

多进程

在python中使用多进程方法加速批量出图是非常方便的。但这需要电脑有多个核,当然对于现代电脑和服务器而言已经不再是问题。

可选择deco和multiprocessing工具解决此问题。deco是对multiprocessing的封装,使用更加简单方便。

示例:

from deco import *

@concurrent(processes=4) # We add this for the concurrent function

def process_lat_lon(lat, lon, data):

#Does some work which takes a while

return result

@synchronized # And we add this for the function which calls the concurrent function

def process_data_set(data):

results = defaultdict(dict)

for lat in range(...):

for lon in range(...):

results[lat][lon] = process_lat_lon(lat, lon, data)

return results

第一个装饰器中给定了一个参数processes:表示进程数,如果没有给定,则使用所有的cpu。

第一个函数使用装饰器@concurrent,第二个函数使用了装饰器@synchronized,第二个函数中调用了第一个函数。第二个函数的装饰器是可选的,但最好使用装饰器进行封装。

图形渲染

以数值预报模式的批量出图过程中的气象要素空间分布为例。气象要素的空间分布必然涉及到地理信息的处理,比如添加海岸线、省市边界线、江流河海等。对于空间分布图而言,上述的地理信息是不变的。因此在批量出图时,相同地理范围的图可以使用相同的背景图。以温度的空间分布为例,这里所说的背景图是除了温度的空间分布外的海岸线、省市边界线、轴的标注等信息。

在绘图的时候都是按照图层进行先后叠加的,而叠加后的图层是可以删除的。批量出图时只需要将会变的信息清空,然后在背景图上叠加新的信息即可。这样,就能节省绘制地图的时间ÿ


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部