📜  在Python中进行分析

📅  最后修改于: 2022-05-13 01:54:51.565000             🧑  作者: Mango

在Python中进行分析

Python提供了许多优秀的模块来测量程序的统计信息。这使我们知道程序在哪里花费了太多时间以及如何优化它。最好优化代码以提高程序的效率。因此,执行一些标准测试以确保优化,我们可以改进程序以提高效率。

使用定时器:
定时器很容易实现,它们可以在程序的任何地方使用来测量执行时间。通过使用计时器,我们可以获得准确的时间,并且我们可以改进耗时过长的程序。 Time模块提供了分析程序的方法。

示例 #1:

# importing time module
import time
  
start = time.time()
print("Time Consumed")
print("% s seconds" % (time.time() - start))
输出:
Time Consumed
0.01517796516418457 seconds

示例 #2:

# importing time module
import time
  
def gfg():
    start = time.time()
    print("Time consumed")
    end = time.time()
    print("gfg() function takes", end-start, "seconds")
  
# Calling gfg
gfg()
输出:
Time consumed
gfg() function takes 0.015180110931396484 seconds


使用 line_profiler:
Python提供了一个内置模块来测量执行时间,模块名称是 LineProfiler。它给出了程序消耗时间的详细报告。

例子:

# importing line_profiler module
from line_profiler import LineProfiler
  
def geek(rk):
    print(rk)
  
rk ="geeks"
profile = LineProfiler(geek(rk))
profile.print_stats()
输出:
Timer unit: 4.27198e-10 s


使用 cProfile:
Python包含一个名为 cProfile 的内置模块,用于测量程序的执行时间。cProfiler 模块提供有关程序执行多长时间以及函数在程序中调用多少次的所有信息。

代码 #1

# importing cProfile
import cProfile
  
cProfile.run("10 + 10")
输出:
3 function calls in 0.000 seconds

   Ordered by: standard name

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    0.000    0.000    0.000    0.000 :1()
        1    0.000    0.000    0.000    0.000 {built-in method builtins.exec}
        1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}

代码 #2: cProfile 测量任何函数的统计信息。

# importing cProfile
import cProfile
  
def f():
    print("hello")
cProfile.run('f()')
输出:
hello
         5 function calls in 0.000 seconds

   Ordered by: standard name

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    0.000    0.000    0.000    0.000 3233da5f950795af777f4b63136f7efd.py:5(f)
        1    0.000    0.000    0.000    0.000 :1()
        1    0.000    0.000    0.000    0.000 {built-in method builtins.exec}
        1    0.000    0.000    0.000    0.000 {built-in method builtins.print}
        1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}