Python timeit模块原理及使用方法

yizhihongxing

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-NumPy计算Legendre数列的根

    计算 Legendre 数列的根是数学中的一个重要问题,在 Python 中可以用 NumPy 库来处理。下面是计算 Legendre 数列根的完整攻略: 1. 引入 NumPy 库 首先,需要引入 NumPy 库,用于处理多维数组、矩阵等数学计算。 import numpy as np 2. 定义 Legendre 函数 定义 Legendre 函数,使用…

    python-answer 2023年3月25日
    00
  • matplotlib 示例代码不适用于 python 虚拟环境

    【问题标题】:matplotlib example code not working on python virtual environmentmatplotlib 示例代码不适用于 python 虚拟环境 【发布时间】:2023-04-05 14:56:01 【问题描述】: 我正在尝试在 matplotlib 中显示图像的 x y z 坐标。 the ex…

    Python开发 2023年4月5日
    00
  • python开发一款翻译工具

    Python开发一款翻译工具攻略 Python开发一款翻译工具是一项很有意义的工作。这需要熟悉Python编程语言及其常用库,同时也需要一定的自然语言处理技能。下面是一个实现Python开发一款翻译工具的攻略。 1. 设计 在设计翻译工具之前,需要明确以下几个问题: 翻译的语言,支持哪些语言? 输入和输出的数据格式? 是否需要使用第三方API? 例如,我们可…

    python 2023年6月3日
    00
  • Python基础知识之函数,类,模块

    Python是一门灵活多变的编程语言,在学习过程中,函数、类和模块是必不可少的基础知识。本文将详细讲解Python的函数、类和模块,让你了解其重要性和运用方法。 函数 在Python中,函数是一种可重用的代码块,用于完成特定的任务。以下是Python函数的定义: # 定义函数 def function_name(parameters): statement(…

    python 2023年5月31日
    00
  • 对python 合并 累加两个dict的实例详解

    对Python合并累加两个dict的实例详解 在Python中,可以通过多种方法合并两个dict,并将它们的值累加在一起。本篇攻略将通过代码实例介绍三种方法。 方法一:字典解析式 dict1 = {‘a’: 3, ‘b’: 5, ‘c’: 2} dict2 = {‘b’: 2, ‘d’: 4, ‘e’: 1} result = {k: dict1.get(k…

    python 2023年6月3日
    00
  • 使用Spring的ApplicationEvent实现本地事件驱动的实现方法

    以下是“使用Spring的ApplicationEvent实现本地事件驱动的实现方法”的完整攻略: 概述 Spring Framework提供了一个事件机制,即ApplicationEvent和ApplicationListener。通过应用这个机制,可以实现面向事件的编程模式,对事件进行管理和响应。本文将介绍如何使用Spring的ApplicationEv…

    python 2023年6月13日
    00
  • Python入门篇之字典

    关于Python字典的入门篇攻略,我来给你详细的讲解。 什么是字典? Python中的字典(Dictionary)是一种无序的、可变的数据类型,它由键(key)和值(value)组成,键和值之间用冒号 “:” 分隔,多个键值对用逗号分隔,整个字典用一对大括号 “{}” 括起来。 例如,下面这个字典记录了几种水果的名称及其价格: fruits = {‘appl…

    python 2023年5月13日
    00
  • python如何创建TCP服务端和客户端

    当我们需要在本机或者远程服务器上实现进程间通信,就需要使用到TCP(Transmission Control Protocol)套接字编程。在Python中,我们使用socket库来实现TCP服务端和客户端。 如何创建TCP服务端 导入socket库模块 import socket 创建套接字 server_socket = socket.socket(so…

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