包含python函数执行耗时的词条

找出python程序中运行时最耗时间的部分那就是profile和cProfile模块:
import cProfile
cProfile.run('function....')
另外,time模块,在不同的函数的开头和结尾分别计时,然后将两个时间相减,就可以获得这段函数的运行时间了,然后在看哪段函数占的时间比较大:
import time
t1=time.time()
##you function segment here
t2=time.time()
timediff=t2-t1
python 打印出函数执行所用时间使用timeit模块,先介绍下:
timeit 模块
timeit 模块定义了接受两个参数的 Timer 类 。两个参数都是字符串 。第一个参数是你要计时的语句或者函数 。传递给 Timer 的第二个参数是为第一个参数语句构建环境的导入语句 。从内部讲,timeit 构建起一个独立的虚拟环境,手工地执行建立语句,然后手工地编译和执行被计时语句 。
一旦有了 Timer 对象,最简单的事就是调用 timeit(),它接受一个参数为每个测试中调用被计时语句的次数,默认为一百万次;返回所耗费的秒数 。
Timer 对象的另一个主要方法是 repeat(),它接受两个可选参数 。第一个参数是重复整个测试的次数,第二个参数是每个测试中调用被计时语句的次数 。两个参数都是可选的,它们的默认值分别是 3 和 1000000 。repeat() 方法返回以秒记录的每个测试循环的耗时列表 。Python 有一个方便的 min 函数可以把输入的列表返回成最小值,如: min(t.repeat(3, 1000000))
你可以在命令行使用 timeit 模块来测试一个已存在的 Python 程序 , 而不需要修改代码 。
再给你个例子,你就知道怎么做了 。
# -*- coding: utf-8 -*-
#!/bin/env python
def test1():
n=0
for i in range(101):
n+=i
return n
def test2():
return sum(range(101))
def test3():
return sum(x for x in range(101))
if __name__=='__main__':
from timeit import Timer
t1=Timer("test1()","from __main__ import test1")
t2=Timer("test2()","from __main__ import test2")
t3=Timer("test3()","from __main__ import test3")
print t1.timeit(1000000)
print t2.timeit(1000000)
print t3.timeit(1000000)
print t1.repeat(3,1000000)
print t2.repeat(3,1000000)
print t3.repeat(3,1000000)
提升Python运行速度的5个小技巧pre{overflow-x: auto}
Python 是世界上使用最广泛的编程语言之一 。它是一种解释型高级通用编程语言,具有广泛的用途 , 几乎可以将其用于所有事物 。其以简单的语法、优雅的代码和丰富的第三方库而闻名 。python除了有很多优点外 , 但在速度上还有一个非常大的缺点 。
虽然Python代码运行缓慢,但可以通过下面分享的5个小技巧提升Python运行速度!
首先,定义一个计时函数timeshow , 通过简单的装饰 , 可以打印指定函数的运行时间 。
这个函数在下面的例子中会被多次使用 。
def timeshow(func):from time import timedef newfunc(*arg, **kw):t1 = time()res = func(*arg, **kw)t2 = time()print(f"{func.__name__: 10} : {t2-t1:.6f} sec")return resreturn newfunc@timeshowdef test_it():print("hello pytip")test_it()1. 选择合适的数据结构
使用正确的数据结构对python脚本的运行时间有显着影响 。Python 有四种内置的数据结构:
列表 :List
元组 :Tuple
集合 :Set
字典 :Dictionary
但是,大多数开发人员在所有情况下都使用列表 。这是不正确的做法,应该根据任务使用合适数据结构 。
运行下面的代码 , 可以看到元组执行简单检索操作的速度比列表快 。其中dis模块反汇编了一个函数的字节码,这有利于查看列表和元组之间的区别 。

推荐阅读