包含python函数所用时间的词条

在python里用time.time判断函数的执行时间靠谱吗使用time.time来统计函数的执行时间 , 程序只会执行一次,存在很大的随机因素 。
timtit包就可以重复执行函数多次,然后将多次执行结果取平均值 。相比起来更优 。
然而程序执行时间很大程度还受计算机性能的影响,衡量程序好坏更靠谱的手段是计算时间复杂度 。
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)
7种检测Python程序运行时间、CPU和内存占用的方法1. 使用装饰器来衡量函数执行时间
有一个简单方法,那就是定义一个装饰器来测量函数的执行时间,并输出结果:
import time
from functoolsimport wraps
import random
def fn_timer(function):
@wraps(function)
def function_timer(*args, **kwargs):
t0= time.time()
result= function(*args, **kwargs)
t1= time.time()
print("Total time running %s: %s seconds" %
(function.__name__, str(t1- t0))
)
return result
return function_timer
@fn_timer
def random_sort(n):
return sorted([random.random() for i in range(n)])
if __name__== "__main__":
random_sort(2000000)
输出:Total time running random_sort: 0.6598007678985596 seconds
使用方式的话,就是在要监控的函数定义上面加上 @fn_timer 就行了
或者
# 可监控程序运行时间
import time
import random
def clock(func):
def wrapper(*args, **kwargs):
start_time= time.time()
result= func(*args, **kwargs)
end_time= time.time()
print("共耗时: %s秒" % round(end_time- start_time, 5))
return result
return wrapper
@clock
def random_sort(n):
return sorted([random.random() for i in range(n)])
if __name__== "__main__":
random_sort(2000000)
输出结果:共耗时: 0.65634秒
2. 使用timeit模块
另一种方法是使用timeit模块,用来计算平均时间消耗 。
执行下面的脚本可以运行该模块 。
这里的timing_functions是Python脚本文件名称 。
在输出的末尾,可以看到以下结果:4 loops, best of 5: 2.08 sec per loop
这表示测试了4次,平均每次测试重复5次 , 最好的测试结果是2.08秒 。
如果不指定测试或重复次数,默认值为10次测试 , 每次重复5次 。
3. 使用Unix系统中的time命令
然而,装饰器和timeit都是基于Python的 。在外部环境测试Python时,unix time实用工具就非常有用 。
运行time实用工具:
输出结果为:
Total time running random_sort: 1.3931210041 seconds
real 1.49
user 1.40
sys 0.08
第一行来自预定义的装饰器,其他三行为:
real表示的是执行脚本的总时间
user表示的是执行脚本消耗的CPU时间 。
sys表示的是执行内核函数消耗的时间 。
注意:根据维基百科的定义 , 内核是一个计算机程序 , 用来管理软件的输入输出,并将其翻译成CPU和其他计算机中的电子设备能够执行的数据处理指令 。
因此,Real执行时间和User Sys执行时间的差就是消耗在输入/输出和系统执行其他任务时消耗的时间 。
4. 使用cProfile模块
5. 使用line_profiler模块
6. 使用memory_profiler模块
7. 使用guppy包
python函数深入浅出 16.time.sleep()函数详解time.sleep() 函数命名来源于英文单词time(时间)和sleep(睡眠) 。
time 是python带的非内置库,使用时需要import,主要用于处理和时间相关的操作 。
time.sleep用于给定时间内挂起(等待)当前线程的执行 。
time.sleep() 函数的例子:
可以注释掉time.sleep(2)再运行一次对比一下
可以看到虽然都是打印出一样的结果,但time.sleep()加入了等待时间
这里还要解释一下python中线程与进程的区别 。
举个例子,厨房做菜看成是一个进程,那么这个进程下面就可能有多个人或一个人(cpu基本执行单元 , 即线程)来执行,多个人可以分别洗菜,刷碗,摆盘等等同时作业 , 他们又是共享这个厨房的资源的 。每个人存在一定的资源竞争关系,比如炉火只有1个 。
这里time.sleep是针对线程执行的 , 也就是其中一个人去sleep睡觉了,不影响其他人的继续工作 。
参数
该函数没有返回值 。
结果类似如下:
可以看到秒数相差了5

time.sleep()常用于推迟执行的场景
在python中,与时间相关的模块有:time,datetime以及calendar
对基础运行环境有疑问的 , 推荐参考: python函数深入浅出 0.基础篇
Python测量程序运行时间,time.time与time.clock现象描述python函数所用时间:
1、time.clock 在win系统和linux系统下对相同程序的计时结果不一致
2、到底应该用什么时间计时?为什么用time.time与time.clock计时会有那么大的差异
在计算机领域有多种时间 。
第一种称作CPU时间或执行时间,用于测量在执行一个程序时CPU所花费的时间 。第二种称作挂钟时间 , 测量执行一个程序时的总时间 。挂钟时间也被称作流逝时间或运行时间 。与CPU时间相比,挂钟时间通常长些,因为CPU执行测量的程序可能同时还在执行其它程序的指令 。
另一个重要概念是所谓的系统时间 , 由系统时钟测量 。系统时间表示计算机系统时间传递的概念 。要记住系统时钟是可以由操作系统修改的,就是修改系统时间 。
在Unix系统上,time.time的作用与Windows相同,但time.clock的意义不同 。
在Unix系统上,time.clock以秒为单位返回当前处理器时间,例如,执行当前线程所花费的CPU时间 。而在Windows上,它是以秒为单位的返回自首次调用该函数以来所流逝的系统时间 。
以我遇到的Ubuntu系统上运行time.time和time.clock的例子python函数所用时间:
time.time()显示系统时间过去大概1秒,而time.clock()显示花费在当前进程上的CPU时间只有于1毫秒 。
而win下time.time()和time.clock()显示系统时间都是大致过去了1秒
在测量程序准确性能时应该使用哪一个呢?
这要视情况而定 。如果程序运行的系统能够提供足够的资源给程序,例如 , 一个运行基于Python的web应用程序的web服务器,则使用time.clock()来测量程序会更有意义 , 因这个web应用程序可能是服务器上的主要程序。如果程序运行的系统上还同时运行着其它大量程序 , 则使用time.time()进行测量会更有意义 。如果不是这样,就应该使用基于挂钟的计时器来测量程序的性能,因为这样通常能反应程序的环境 。
放结论,一般情况下:
1、win用time.clock或time.time
2、linux 下用time.time或 datetime.datetime.now().timestamp()
【1】(重要)Python测量时间,用time.time还是time.clock
python延时函数python延时函数是什么python函数所用时间?一起来看看吧!
python延时函数即python time sleep() 函数python函数所用时间,推迟调用线程的运行python函数所用时间,可通过参数secs指秒数python函数所用时间,表示进程挂起的时间 。该函数没有返回值 , sleep()方法语法python函数所用时间:time.sleep(t),t表示推迟执行的秒数 。
函数接收一个指定函数fn,一个延迟时间ms和指定函数的参数*args , 在指定延迟后,返回指定函数fn的调用结果 。函数使用sleep()方法来进行延迟,然后调用指定函数 。delay函数在调用的时候,可以使用lambda表达式的匿名函数,也可以使用一般函数 。需要注意的是当fn存在关键字参数时会发生异常 。
例如:
#!/usr/bin/pythonimport timeprint "Start : %s" % time.ctime()time.sleep( 5 )print "End : %s" % time.ctime()Start : Tue Feb 17 10:19:18 2013End : Tue Feb 17 10:19:23 2013from time import sleepdef delay(fn, ms, *args):sleep(ms / 1000)return fn(*args)# EXAMPLESdelay(lambda x: print(x),1000,'later') # prints 'later' after one second
【包含python函数所用时间的词条】关于python函数所用时间和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读