PyCharm的Profile工具进行python代码性能分析

PyCharm提供了性能分析工具:Profile

利用Profile工具可以对代码进行性能分析,找出代码瓶颈所在。

1、Profile的使用

使用Profile方式一:

使用Profile方式二:

2、案例分析

2.1 简单函数示例

import time


def fun1():
    print('fun2')
    time.sleep(1)


def fun2():
    print('fun3')
    time.sleep(2)


def fun3():
    print('fun5')
    time.sleep(1)
    fun2()


fun1()
fun2()
fun3()

使用profile开始测试,代码运行结束后会生成一栏测试结果,测试结果由两部分构成,Statistcs(性能统计)和Call Graph(调用关系图)。

Statistcs(性能统计):

性能统计界面由Name、Call Count、Time(ms)、Own Time(ms) 4列组成一个表格。

  • 表头Name显示被调用的模块或者函数
  • Call Count显示被调用的次数
  • Time(ms)显示运行时间和时间百分比,时间单位为毫秒(ms)
  • 点击表头上的小三角可以升序或降序排列表格
  • 在Name这一个列中双击某一行可以跳转到对应的代码

举例分析:以func2这一行为例,func2被调用了2次,运行时间为4002ms,占整个运行时间的66.6%。

Call Graph(调用关系图):

Call Graph(调用关系图)界面直观展示了各函数直接的调用关系、运行时间和时间百分比。

  • 箭头表示调用关系,由调用者指向被调用者
  • 矩形的左上角显示模块或者函数的名称,右上角显示被调用的次数
  • 矩形中间显示运行时间和时间百分比
  • 矩形的颜色表示运行时间或者时间百分比大小的趋势

2.2 简单项目中示例:

示例代码:

import datetime

from bson.json_util import dumps
from flask import Flask, Response
from flask_mongoengine import MongoEngine

app = Flask(__name__)
db = MongoEngine()


class Movie(db.Document):
    name = db.StringField(required=True, unique=True)
    casts = db.ListField(db.StringField(), required=True)
    genres = db.ListField(db.StringField(), required=True)
    created_at = db.DateTimeField(default=datetime.datetime.utcnow)


@app.route('/movies')
def get_movies():
    movies = Movie.objects()
    movies_list = []
    for movie in movies:
        movie_dict = movie.to_mongo().to_dict()
        movie_dict['created_at'] = movie.created_at.isoformat()
        movies_list.append(movie_dict)
    movies_json = dumps(movies_list)
    return Response(movies_json, mimetype="application/json", status=200)


if __name__ == '__main__':
    app.config['MONGODB_SETTINGS'] = {
        'host': 'mongodb://root:88888888@192.168.124.49:27017/test-movie?authSource=admin&retryWrites=true&w=majority'
    }

    db.init_app(app)
    app.run()

使用profile运行:

项目启动时Statistics展示:

Call Graph展示:

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
PyCharm是一款功能强大的Python集成开发环境,它提供了许多实用的工具来帮助开发者提高代码性能。其中之一就是性能分析工具。通过使用PyCharm性能分析工具,开发者可以找到程序中的性能瓶颈,并进行相应的优化。 在PyCharm中,可以使用内置的性能分析工具Profile进行性能分析。通过使用Profile,你可以详细了解程序中各个函数的运行时间和调用关系。具体操作包括以下几个步骤: 1. 首先,你需要在你的代码中插入性能分析代码。可以使用`profile`模块来实现这个功能。在你想要进行性能分析的函数前面添加装饰器`@profile`,然后运行你的代码。 2. 运行代码后,PyCharm会自动打开一个性能分析的视图。在这个视图中,你可以看到代码的运行时间、函数的调用次数等统计信息。 3. 在性能分析视图中,你可以选择查看不同的统计数据。例如,你可以查看函数的运行时间、函数的调用次数、函数的调用关系等等。这些统计数据可以帮助你找到程序中的性能问题。 4. 通过分析性能统计和调用关系图,你可以找到程序中的性能瓶颈。例如,你可以查看哪些函数的运行时间最长,哪些函数被频繁调用等等。 总的来说,PyCharm性能分析工具可以帮助你找到程序中的性能问题,并提供相应的优化建议。通过使用这个工具,你可以提高代码性能,提升程序的运行效率。 : https://www.example.com/article1 : https://www.example.com/article2 : https://www.example.com/article3

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值