使用line_profiler查看函数每一行的运行时间

其实使用方法并不难,但是我用 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

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Jupyter Notebook 中使用 `line_profiler` 进行代码性能分析,你可以按照以下步骤进行: 1. 安装 `line_profiler` 和需要的前端界面(如 `ipython` 或 `matplotlib`): ```bash pip install line_profiler ipython matplotlib ``` 2. 在你的 Jupyter Notebook 中,导入 `line_profiler` 和需要分析的函数: ```python from line_profiler import LineProfiler import your_module ``` 3. 需要对某个函数或方法进行性能分析,先定义一个 `LineProfiler` 对象,然后用它来装饰要分析的函数: ```python profiler = LineProfiler() @profiler def your_function(): # 你的代码逻辑 ``` 4. 调用函数并运行性能分析: ```python your_function() ``` 5. 显示结果: - 如果你想要实时查看每个代码行的执行时间,可以使用 `profile()` 方法,但通常不直接在 notebook 中这样做,因为它可能不会显示在交互式的环境中。 - 若要生成详细的分析报告,你需要运行命令行工具 ` kernprof` 或 `lprun`。这通常在终端中进行: ``` kernprof -l -v your_script.py ``` - 这将生成一个 `.html` 文件,其中包含了性能分析的结果,可以在浏览器中打开查看。 6. 在 Jupyter Notebook 中查看结果: - 你可以通过 `IPython` 的 `%load_ext line_profiler` 命令加载扩展,然后使用 `%lprun` 或 `%run -l your_script.py` 来查看结果。 - 结果将以表格的形式展示,包含函数名称、时间消耗、百分比等信息。 7. 对于更详细的分析,还可以使用 `line_profiler` 的可视化工具,如 `snakeviz`: - 安装 `snakeviz`:`pip install snakeviz` - 将分析文件(`.html`)与 `snakeviz` 结合使用,例如: ```bash python -m snakeviz your_script.html ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值