Python执行时间的几种计算方法

首先说一下我遇到的坑,生产上遇到的问题,我调度Python脚本执行并监控这个进程,python脚本运行时间远远大于python脚本中自己统计的程序执行时间。

监控python脚本执行的时间是36个小时,而python脚本中统计自己执行的时间是4个小时左右。
问题暴漏之后首先想到的是linux出了问题,查找各种日志未发现有何异常。

然后是想到python中用到的py2neo的写数据异步,阻塞进程执行。

最后,终于找到问题的所在:python脚本使用统计时间的方式是time.clock(),而这种方式统计的是CPU的执行时间,不是程序的执行时间。

接下来,就几种python的统计时间方式对比一下:

方法1:

import datetime
starttime = datetime.datetime.now()
#long running
#do something other
endtime = datetime.datetime.now()
print (endtime - starttime).seconds

datetime.datetime.now()获取的是当前日期,在程序执行结束之后,这个方式获得的时间值为程序执行的时间。

方法2:

start = time.time()
#long running
#do something other
end = time.time()
print end-start

time.time()获取自纪元以来的当前时间(以秒为单位)。如果系统时钟提供它们,则可能存在秒的分数。所以这个地方返回的是一个浮点型类型。这里获取的也是程序的执行时间。

方法3:

start = time.clock()
#long running
#do something other
end = time.clock()
print end-start

time.clock()返回程序开始或第一次被调用clock()以来的CPU时间。 这具有与系统记录一样多的精度。返回的也是一个浮点类型。这里获得的是CPU的执行时间。
注:程序执行时间=cpu时间 + io时间 + 休眠或者等待时间

以上就是Python执行时间的几种计算方法的详细内容,更多关于Python执行时间的计算方法的资料请关注我们其它相关文章!

(0)

相关推荐

  • 在IPython中进行Python程序执行时间的测量方法

    在写MATLAB的脚本的时候我时长会用tic.toc进行一下程序运行时间的测量.在Python中偶尔也会测试下,但是基本上都是靠使用time模块.接触了IPython之后突然间发现,原来程序执行时间的测试可以如此简单! 在IPython中,程序执行时间的测试是通过魔术函数来实现.这个功能的魔术函数有两个,一个是time,还有一个是timeit.后面这个功能与前面的功能类似,但是更为精确,因为测试采用了多次测试求取平均值的方式实现. 之前写了一个简单的测试小脚本, #!/usr/bin/pytho

  • Python实现监控程序执行时间并将其写入日志的方法

    本文实例讲述了Python实现监控程序执行时间并将其写入日志的方法.分享给大家供大家参考.具体实现方法如下: # /usr/bin/python # -*- coding:utf-8 -*- from time import time def logged(when): def log(f,*args,**kargs): print ''' called: functions:%s args: %r kargs: %r ''' % (f,args,kargs) def pre_logged(f)

  • python 限制函数执行时间,自己实现timeout的实例

    如下所示: # coding=utf-8 import signal import time def set_timeout(num, callback): def wrap(func): def handle(signum, frame): # 收到信号 SIGALRM 后的回调函数,第一个参数是信号的数字,第二个参数是the interrupted stack frame. raise RuntimeError def to_do(*args, **kwargs): try: signal.

  • Python如何计算语句执行时间

    这篇文章主要介绍了Python如何计算语句执行时间,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 魔法命令 In [1]: #%time 对单个语句执行时间计时用法放在需要计算的语句前面 %time sum(range(1000)) Wall time: 0 ns Out[1]: 499500 In [2]: #这个操作很快,可以用%timeit计算,该命令重复计算很多次以得到更精确的时间,重复次数自动调整 %timeit sum(range(

  • Python执行时间的计算方法小结

    首先说一下我遇到的坑,生产上遇到的问题,我调度Python脚本执行并监控这个进程,python脚本运行时间远远大于python脚本中自己统计的程序执行时间. 监控python脚本执行的时间是36个小时,而python脚本中统计自己执行的时间是4个小时左右. 问题暴漏之后首先想到的是Linux出了问题,查找各种日志未发现有何异常. 然后是想到python中用到的py2neo的写数据异步,阻塞进程执行. 最后,终于找到问题的所在:python脚本使用统计时间的方式是time.clock(),而这种方

  • python使用装饰器和线程限制函数执行时间的方法

    本文实例讲述了python使用装饰器和线程限制函数执行时间的方法.分享给大家供大家参考.具体分析如下: 很多时候函数内部包含了一些不可预知的事情,比如调用其它软件,从网络抓取信息,可能某个函数会卡在某个地方不动态,这段代码可以用来限制函数的执行时间,只需要在函数的上方添加一个装饰器,timelimited(2)就可以限定函数必须在2秒内执行完成,如果执行完成则返回函数正常的返回值,如果执行超时则会抛出错误信息. # -*- coding: utf-8 -*- from threading imp

  • Python代码执行时间测量模块timeit用法解析

    1.timeit模块 timeit模块可以用来测试一小段python代码的执行速度 class timeit.Timer(stmt = 'pass',setup = 'pass',timer=<timer function>) Timer是测量小段代码执行速度的类 stmt参数是要测试的代码语句(statment); setup参数是运行代码时需要的设置: timer参数是一个定时器函数,与平台有关(windows,unix,linux,mac). timeit.timer(number =

  • Python执行时间的几种计算方法

    首先说一下我遇到的坑,生产上遇到的问题,我调度Python脚本执行并监控这个进程,python脚本运行时间远远大于python脚本中自己统计的程序执行时间. 监控python脚本执行的时间是36个小时,而python脚本中统计自己执行的时间是4个小时左右. 问题暴漏之后首先想到的是linux出了问题,查找各种日志未发现有何异常. 然后是想到python中用到的py2neo的写数据异步,阻塞进程执行. 最后,终于找到问题的所在:python脚本使用统计时间的方式是time.clock(),而这种方

  • Python执行时间计算方法以及优化总结

    目录 一.时间不一致的猜想 二.原因探索 1.方法一 2.方法二 3.方法三 三.python 运行效率慢的原因 1.简介 2.运行效率慢的原因 四.python 优化 一.时间不一致的猜想 python脚本运行时间远远大于python脚本中统计的计算时间 猜想: 1.python中用到的是py2neo的写数据异步,阻塞进程运行: 2.python脚本使用统计时间的方式是time.clock(),而这种方式统计的是CPU的执行时间,不是程序的执行时间. 程序执行时间 = CPU运行时间 + IO

  • python执行精确的小数计算方法

    在进行浮点数计算时它们无法精确表达出所有的十进制小数位. a = 4.1 b = 5.329 print(a+b) 9.428999999999998 这些误差实际上是底层CPU的浮点运算单元和IEEE754浮点数算数标准的一种"特性".python的浮点数类型保存的数据采用的是原始表示形式,因此使用float实例时就不能避免这样的误差. 我们可以使用decimal模块避免这种操作(如果不介意牺牲下性能): from decimal import Decimal a = Decimal

  • 简单了解Python中的几种函数

    几个特殊的函数(待补充) python是支持多种范型的语言,可以进行所谓函数式编程,其突出体现在有这么几个函数: filter.map.reduce.lambda.yield lambda >>> g = lambda x,y:x+y #x+y,并返回结果 >>> g(3,4) 7 >>> (lambda x:x**2)(4) #返回4的平方 16 lambda函数的使用方法: 在lambda后面直接跟变量 变量后面是冒号 冒号后面是表达式,表达式计算

  • Python单例模式的两种实现方法

    Python单例模式的两种实现方法 方法一  import threading class Singleton(object): __instance = None __lock = threading.Lock() # used to synchronize code def __init__(self): "disable the __init__ method" @staticmethod def getInstance(): if not Singleton.__instanc

  • 用C语言模仿Python函数的一种简单实现方法

    首先得说明一点,C 语言不是函数式编程语言,要想进行完全的函数式编程,还得先写个虚拟机,然后再写个解释器才行(相当于 CPython ). 下面我们提供一个例子,说明 C 语言函数可以"适度地模仿" Python 函数. 我们有如下的 Python 程序: def line_conf(a, b): def line(x): return a*x + b return line line1 = line_conf(1, 1) line2 = line_conf(4, 5) print(l

  • Python学习_几种存取xls/xlsx文件的方法总结

    想在深度学习程序运行时动态存下来一些参数. 存成Excel文件查看方便,就查了几种方法,做个测试.因为我平常也不怎么用 Excel,简单的存取数据就够了. xlwt/xlrd库 存Excel文件:(如果存储数据中有字符,那么写法还有点小小的变化) import xlwt workbook = xlwt.Workbook(encoding='utf-8') booksheet = workbook.add_sheet('Sheet 1', cell_overwrite_ok=True) #存第一行

  • elasticsearch python 查询的两种方法

    elasticsearch python 查询的两种方法,具体内容如下所述: from elasticsearch import Elasticsearch es = Elasticsearch res1 = es.search(index="2018-07-31", body={"query": {"match_all": {}}}) print(es1) {'_shards': {'failed': 0, 'skipped': 0, 'suc

  • 详解Python中的四种队列

    队列是一种只允许在一端进行插入操作,而在另一端进行删除操作的线性表. 在Python文档中搜索队列(queue)会发现,Python标准库中包含了四种队列,分别是queue.Queue / asyncio.Queue / multiprocessing.Queue / collections.deque. collections.deque deque是双端队列(double-ended queue)的缩写,由于两端都能编辑,deque既可以用来实现栈(stack)也可以用来实现队列(queue

  • Python中的四种交换数值的方法解析

    这篇文章主要介绍了Python中的四种交换数值的方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 交换两个变量的值方法,这个面试题如果只写一种当然很简单,没什么可以说的. 今天这个面试是问大家有几种办法来实现交换两个变量的值. 在没开始看具体答案前,你可以先想想看 下面分别来说说这几种方法 方法一 通过新添加中间变量temp的方式,这个方法是最简单的,每个语言都适用. 方法二 Python独有的方法,一行代码就能搞定,直接将两个变量放到元

随机推荐