来写一个最基本的装饰器吧!

程序需要,经常要计算一下程序运行的时间,所以……懒死了的我决定,把这个装饰器记下来,以后用的时候就直接过来复制一下:

import datetime
def time_it(func):
    def _deco(*args, **kwargs):
        start = datetime.datetime.now()
        print("--- Start time: %s ---" % start)
        ret = func(*args, **kwargs)
        end = datetime.datetime.now()
        print("---- End time: %s ----" % end)
        print("Function spend time: %s" % (end - start))
        return ret
    return _deco

这是个装饰器啊。别问我装饰器怎么用……去补补python基础吧。

时间: 2024-10-26 08:34:48

来写一个最基本的装饰器吧!的相关文章

python 写一个计算执行时间的装饰器

面试题之一. 写一个装饰器wraps,它接收一个参数t,如果函数执行时间超过1秒,输出"bad",否则输出"goods". 首先,计算函数的执行时间: import time start = time.clock() for i in range(1000000):     pass end = time.clock() print "cost time = %f s" % (end-start) 结果: >>> cost ti

一个有用的python装饰器 -- 为执行程序加锁

最近在写python项目的时候遇到一个问题 有这样一个python脚本: 1 脚本功能  A 监控网卡的实时流量,如果该流量超过设定阀值就去增加带宽(购买带宽包) B 脚本放在 crontab 中,并且是每分钟执行一次 2  遇到问题 在执行脚本的过程中,如果一分钟内该程序没有执行完,就可能会有两个相同的代码同时执行,导致的问题是 会同时购买两次带宽包,这样会造成资源的浪费. 3  解决思路 A  可以调整crontab,增加代码执行的时间(治标不治本) B  为该程序加锁,同一时间只允许运行一

如何写一个正经的音乐播放器 四 意外情况

四,意外情况的控制. 在音频播放时候,容易遇到一些意外情况,这时候,我们就要处理这些意外情况,这时候,我们需要针对不同的意外情况进行处理.大概可以分成两种情况. 1,失去audio_focus的控制. 造成我们的播放器失去焦点的情况很多,主要是其他声音请求了焦点,例如说,其他音乐播放器开始播放音乐,突然来电,短息等. 以上的焦点失去,都可以用AudioManager.OnAudioFocusChangeListener中的回调来处理.先取得AudioManager AudioManager au

单片机裸机下写一个自己的shell调试器

该文章是针对于串口通讯过程中快速定义命令而写的,算是我自己的一个通用化的平台,专门用来进行串口调试用,莫要取笑 要处理串口数据首先是要对单片机的串口中断进行处理,我的方法是正确的命令必须要在命令的结尾处同时带有回车和换行,处理过程如下 //串口接收缓冲区 u8 serial_Buffer[SERIAL_MAX_LENGTH] = {0}; //串口接收数据长度 u16 serial_Buffer_Length = 0; static void SerialRecv(u8 ch) { if((se

用c#写一个json的万能解析器

CommonJsonModel .cs /// <summary> /// 万能JSON解析器 /// </summary> public class CommonJsonModel : CommonJsonModelAnalyze { private string rawjson; private bool isValue = false; private bool isModel = false; private bool isCollection = false; inter

自己动手写一个编译器Tiny语言解析器实现

然后,上一篇文章简介Tiny词法分析,实现语言.本文将介绍Tiny的语法分析器的实现. 1 Tiny语言的语法 下图是Tiny在BNF中的文法. 文法的定义能够看出.INNY语言有以下特点: 1 程序共同拥有5中语句:if语句,repea语句,read语句,write语法和assign语句. 2 if语句以end作为结束符号,if语句和repeat语句同意语句序列作为主体. 3 输入/输出由保留字read和write開始.read语句一次仅仅读出一个变量,而write语句一次仅仅写出一个表达式.

用JS写一个简单的轮播器

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Typ

写一个简单的网站文件管理器-框选

为了这个框选,耗费了无数脑细胞,牺牲了n多的封装特性 源码(害人,下载请谨慎):https://files.cnblogs.com/files/allofalan/wnds-kuangxuan.rar 原文地址:https://www.cnblogs.com/allofalan/p/9949410.html

Python全栈开发之8、装饰器详解

一文让你彻底明白Python装饰器原理,从此面试工作再也不怕了. 一.装饰器 装饰器可以使函数执行前和执行后分别执行其他的附加功能,这种在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator),装饰器的功能非常强大,但是理解起来有些困难,因此我尽量用最简单的例子一步步的说明这个原理. 1.不带参数的装饰器 假设我定义了一个函数f,想要在不改变原来函数定义的情况下,在函数运行前打印出start,函数运行后打印出end,要实现这样一个功能该怎么实现?看下面如何用一个简单的装饰器来实现