其实使用方法并不难,但是我用 kernprof 和@profile并不好用(没弄出来,有时间再好好深挖一下),所以选择了直接调用函数。以下是我写的代码,这是一个父类,其他功能具体的实现方法写在了子类里,但是这个足够学习line_profiler了,而且比较方便观看
import line_profiler
BASE_DIR = os.path.join(os.path.abspath(os.path.dirname(__file__)), "../../..")
sys.path.append(BASE_DIR)
class Base_new(object):
def __init__(self, data_time):
self.data_time = data_time
def check_ident(self):
"""
判断是否需要入库
:return:
"""
# TODO
pass
def get_data(self):
"""
获取数据
:return:
"""
pass
def handle_data(self, data):
"""
数据处理
:param data:
:return:
"""
pass
def create_nc(self, nc_data):
"""
生成nc文件
:param nc_data: 数据
:return:
"""
pass
def data_over(self, data):
"""
数据生成后操作
:param data: 数据
:return:
"""
pass
def run(self):
"""
执行入库 主流程
:return:
"""
# 判断是否需要进行入库
result = self.check_ident()
if result == False:
return
# 获取数据
province_list, file_data = self.get_data()
# 数据处理
data_relace = self.handle_data(file_data)
profile = line_profiler.LineProfiler(self.handle_data) # 把函数传递到性能分析器
profile.enable() # 开始分析
self.handle_data(file_data)
profile.disable() # 停止分析
profile.print_stats() # 打印出性能分析结果
# 生成nc
result = self.create_nc(data_relace)
# 完成标识
if result == False:
return
self.data_over(province_list)
if __name__ == "__main__":
pass