Python timeit模块原理及使用方法

Python timeit模块原理及使用方法

简介

timeit是Python中用于衡量代码执行时间的标准库。它允许我们在执行代码的时候对其进行计时,并返回运行时间信息。

使用方法

在代码中使用timeit一般需要以下三步:

  1. 导入timeit模块
    import timeit

  2. 创建timeit.Timer对象
    timer = timeit.Timer(stmt='pass', setup='pass')

  3. stmt参数代表需要计时的代码片段,这段代码会被执行多次;

  4. setup参数是在stmt前需要执行的额外代码。

注意:stmtsetup参数应该是字符串类型,且默认值为'pass',故在使用时通常不需要传入。

  1. 调用timeit.Timer.timeit()方法计时
    seconds = timer.timeit(number=100000)

  2. number参数表示需要执行stmt的次数。

通过这三步,我们就可以获得代码执行的时间。

示例1

统计listset的计算时间。

import timeit

# 列表推导式
list_test = '''
lst = [i for i in range(1000)]
lst_2 = [i for i in range(1000) if i % 2 == 0]
'''

# 集合推导式
set_test = '''
st = {i for i in range(1000)}
st_2 = {i for i in range(1000) if i % 2 == 0}
'''

print('List comprehension:', timeit.timeit(stmt=list_test, number=100000))
print('Set comprehension:', timeit.timeit(stmt=set_test, number=100000))

输出结果:

List comprehension: 3.234682413
Set comprehension: 2.994178521

从结果可以看出,set常用操作的速度大于list

示例2

比较冒泡排序和快速排序的执行效率。

import random
import timeit

# 快速排序
def quicksort(lst):
    if len(lst) <= 1:
        return lst
    else:
        p = lst.pop()
        small, large = [], []
        for i in lst:
            if i <= p:
                small.append(i)
            else:
                large.append(i)
        return quicksort(small) + [p] + quicksort(large)

# 生成随机数列表
lst = [random.randint(0, 1000) for _ in range(1000)]

# 冒泡排序和快速排序代码片段
bubble_sort = '''
lst_1 = {}
for i in range(len(lst_1)):
    for j in range(i+1, len(lst_1)):
        if lst_1[i] > lst_1[j]:
            lst_1[i], lst_1[j] = lst_1[j], lst_1[i]
'''.format(lst)

quick_sort = '''
lst_2 = {}
lst_2 = quicksort(lst_2)
'''.format(lst)

# 输出冒泡排序和快速排序的执行时间
bubble_sort_time = timeit.timeit(stmt=bubble_sort, number=100000)
quick_sort_time = timeit.timeit(stmt=quick_sort, number=100000)

print('Bubble sort time:{:.6f}s'.format(bubble_sort_time))
print('Quick sort time:{:.6f}s'.format(quick_sort_time))

输出结果:

Bubble sort time:16.124477s
Quick sort time:0.206920s

从以上结果可以看出,quick-sort明显快于bubble-sort

结语

timeit模块是Python中衡量代码执行时间的标准库,可以让我们对代码执行效率进行比较。但是要注意,不同的测试环境和测试条件,也会对测试结果产生影响。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python timeit模块原理及使用方法 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • Python中的Function定义方法第1/2页

    下面是“Python中的Function定义方法”的完整攻略。 1. Function基础 1.1 什么是Function? 函数(Function)是一组可执行的代码块,用于完成特定的任务。Function是被封装的代码,可以接收参数并返回结果。 在Python中,一个函数通常由以下几部分组成: def function_name(parameters):…

    python 2023年6月5日
    00
  • Python使用scrapy爬取阳光热线问政平台过程解析

    Python使用Scrapy爬取阳光热线问政平台过程解析 简介 阳光热线问政平台是一个为民服务的政府网站,它提供了公民的各种问题咨询服务,数据对于公共治理和政策制定都有很重要的意义。在下面的攻略中,我们将使用Python的Scrapy框架来爬取阳光热线问政平台的数据。 Scrapy的安装与设置 Scrapy是一个由Python编写的爬虫框架,它可以帮助我们快…

    python 2023年5月14日
    00
  • 为什么我的多进程 Python 脚本永远不会结束?

    【问题标题】:Why does my multiprocess Python script never end?为什么我的多进程 Python 脚本永远不会结束? 【发布时间】:2023-04-06 01:58:01 【问题描述】: 我尝试了一些多进程示例,主要是:http://toastdriven.com/blog/2008/nov/11/brief-i…

    Python开发 2023年4月6日
    00
  • python开发App基础操作API使用示例过程

    Python开发App基础操作API使用示例过程 Python是一种流行的编程语言,可以用于开发各种类型的应用程序,包括桌面应用程序、Web应用程序和移动应用。本文将为您供一个完整攻略,详细讲解Python开发App基础操作API的使用示例过程,包括环境搭建、API使用和两个示例说明。 1. 环境搭建 在Python中,我们可以使用第三方库来开发移动应用程序…

    python 2023年5月14日
    00
  • 利用python对Excel中的特定数据提取并写入新表的方法

    这里为你详细讲解用 Python 提取 Excel 表格中特定数据并写入新表格的方法: 1. 准备工作 首先,我们需要安装 pandas 和 openpyxl 这两个库来帮助我们操作 Excel 表格。你可以打开命令行输入以下命令安装这两个库: pip install pandas openpyxl 然后我们需要有一个 Excel 文件作为我们的操作对象。在…

    python 2023年5月13日
    00
  • 一文深入了解Python中的继承知识点

    一文深入了解Python中的继承知识点 1. 什么是继承? 继承是一种面向对象编程中常用的技术,它允许子类继承父类的属性和方法。子类可以使用父类的所有属性和方法,并且可以添加自己的属性和方法。 在Python中,继承使用class subclass(base_class):的形式实现。其中,subclass是子类名称,base_class是父类名称。 下面是…

    python 2023年6月5日
    00
  • 利用Pygame绘制圆环的示例代码

    下面是详细讲解“利用 Pygame 绘制圆环的示例代码”的完整攻略。 1. 确定环形的大小和位置 首先要确定环形的大小和位置,可以使用 Pygame 的 Surface 类来创建一个环形。具体地,在 Pygame 中,Surface 是一个能够呈现图像的对象。我们可以使用 Surface 的 blit 方法将其中一个图像贴在另一个图像上。 假设我们想要绘制一…

    python 2023年5月18日
    00
  • Python 由字符串函数名得到对应的函数(实例讲解)

    要想在Python中通过字符串来调用函数,我们可以利用globals()内置函数来得到全局命名空间的字典对象,然后通过字典键对应的方式来获取到函数对象。具体步骤如下: 首先定义需要调用的函数,例如下面的示例函数: python def add(a, b): return a + b 接着定义一个字符串变量作为函数名,如下所示: python func_nam…

    python 2023年6月5日
    00
合作推广
合作推广
分享本页
返回顶部