Python 统计代码运行时间

Python 运行时间

在很多的时候我们需要计算我们程序的性能,这个时候我们常常需要统计程序运行的时间。下面我们就来说说怎么统计程序的运行时间。

datetime

#! /usr/bin/env python

# -*- coding:utf-8 -*-

import datetime
from functools import wraps
import logging

def run_time(func):
    @wraps(func)
    def __wrapper(*args, **kwargs):
        logging.getLogger(__name__)
        start = datetime.datetime.now()
        ret = func(*args, **kwargs)
        end = datetime.datetime.now()
        logging.debug('running time: {}'.format(end-start))
        return ret
    return __wrapper

time.now

#! /usr/bin/env python

# -*- coding:utf-8 -*-

import time
from functools import wraps
import logging

def run_time(func):
    @wraps(func)
    def __wrapper(*args, **kwargs):
        logging.getLogger(__name__)
        start = time.time()
        start_2 = time.clock()
        ret = func(*args, **kwargs)
        end = time.time()
        end_2 = time.clock()
        logging.debug('running time: {}'.format(end-start))
        logging.debug('running time2: {}'.format(end_2-start_2))
        return ret
    return __wrapper

timeit

#! /usr/bin/env python

# -*- coding:utf-8 -*-

import timeit
from functools import wraps
import logging

def run_time(func):
    @wraps(func)
    def __wrapper(*args, **kwargs):
        logging.getLogger(__name__)
        start = timeit.default_timer()
        ret = func(*args, **kwargs)
        end = timeit.default_timer()
        logging.debug('running time: {}'.format(end-start))
        return ret
    return __wrapper

方法对比

  • 方法二的精度比较高。方法一基本上是性能最差的。
  • **uix 平台方法 datetime.now()time.time() 都包含了其他程序使用CPU的时间。方法 time.clock() 只计算了程序运行CPU的时间。
  • *nix 使用 time.time(),windows 使用 time.clock()
  • timeit 可跨平台,推荐使用