source: flex_extract.git/python/profiling.py @ efdb01a

ctbtodev
Last change on this file since efdb01a was efdb01a, checked in by Anne Philipp <anne.philipp@…>, 6 years ago

whole bunch of modifications due to new structure of ECMWFDATA, added basics of documentation, minor programming corrections

  • Property mode set to 100644
File size: 2.0 KB
Line 
1#!/usr/bin/env python
2# -*- coding: utf-8 -*-
3#************************************************************************
4# TODO AP
5# - add description of file
6# - check of license of book content
7#************************************************************************
8"""
9@Author: Anne Philipp (University of Vienna)
10
11@Date: March 2018
12
13@License:
14    (C) Copyright 2018.
15
16    This software is licensed under the terms of the Apache Licence Version 2.0
17    which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
18
19@Requirements:
20    A standard python 2.6 or 2.7 installation
21
22@Description:
23    ...
24"""
25# ------------------------------------------------------------------------------
26# MODULES
27# ------------------------------------------------------------------------------
28from functools import wraps
29import time
30
31# ------------------------------------------------------------------------------
32# FUNCTION
33# ------------------------------------------------------------------------------
34def timefn(fn):
35    '''
36    @Description:
37        Decorator function. It takes the inner function as an argument.
38    '''
39    @wraps(fn)
40    def measure_time(*args, **kwargs):
41        '''
42        @Descripton:
43            Passes the arguments through fn for execution. Around the
44            execution of fn the time is captured to execute the fn function
45            and prints the result along with the function name.
46
47            This is taken from the book "High Performance Python" from
48            Micha Gorelick and Ian Ozsvald, O'Reilly publisher, 2014,
49            ISBN: 978-1-449-36159-4
50
51        @Input:
52            *args: undefined
53                A variable number of positional arguments.
54
55            **kwargs: undefined
56                A variable number of key/value arguments.
57
58        @Return:
59            <nothing>
60        '''
61
62        t1 = time.time()
63        result = fn(*args, **kwargs)
64        t2 = time.time()
65        print("@timefn:" + fn.func_name + " took " + str(t2 - t1) + " seconds")
66
67        return result
68
69    return measure_time
Note: See TracBrowser for help on using the repository browser.
hosted by ZAMG