Python 用装饰器便捷实现多线程
python在新建线程的时候,每次都要将函数封装成threading对象才能执行,考虑到python还提供了装饰器功能,不如把这两个功能结合一下,以后再编写需要新建线程运行的函数时,直接@一下装饰器就可以了。
#import threading
#from functools import wraps
import timedef new_thread(func):import threadingfrom functools import wraps@wraps(func)def inner(*args, **kwargs):# print(f'函数的名字:{func.__name__}')# print(f'函数的位置参数:{args}')thread = threading.Thread(target=func, args=args,kwargs=kwargs)thread.start()return inner@new_thread
def greeting(name):print(f'你好啊,{name}!')time.sleep(3)print(f'再见了,{name}.')if __name__=="__main__":greeting('老张')greeting('小李')greeting('老刘')
输入
你好啊,老张!
你好啊,小李!
你好啊,老刘!
再见了,小李.
再见了,老张.
再见了,老刘.
Python 用装饰器便捷实现多线程相关推荐
- python装饰器函数-Python精进-装饰器与函数对象
本文为<爬着学Python>系列第四篇文章. 从本篇开始,本专栏在顺序更新的基础上,会有不规则的更新. 在Python的学习与运用中,我们迟早会遇到装饰器,这个概念对于初识装饰器的新手来说 ...
- Python之装饰器
Python之装饰器 在不修改函数调用方式的前提下,也不能修改函数内部源代码!!!! 例如: 在每个季度公司发绩效,统计每个人的代码执行效率.咱们总不能是每个函数里加time模块吧. import t ...
- Python设计模式-装饰器模式
Python设计模式-装饰器模式 代码基于3.5.2,代码如下; #coding:utf-8 #装饰器模式class Beverage():name = ""price = 0.0 ...
- 浅谈Django的中间件与Python的装饰器
浅谈Django的中间件 与Python的装饰器 一.原理 1.装饰器是Python的一种语法应用,利用闭包的原理去更改一个函数的功能,即让一个函数执行之前先到另外一个函数中执行其他需求语句,在执行该 ...
- Python的装饰器
详解Python的装饰器 本文源码 https://github.com/tobyqin/python_decorator Python中的装饰器是你进入Python大门的一道坎,不管你跨不跨过去它都 ...
- python 日志 装饰器_【Python】装饰器实现日志记录
好的日志对一个软件的重要性是显而易见的.如果函数的入口都要写一行代码来记录日志,这种方式实在是太低效了,但一直没有找到更好的方法.后来用python写一些软件,了解到python的装饰器功能时,突然人 ...
- python中装饰器的作用_Python装饰器详解,详细介绍它的应用场景
装饰器的应用场景附加功能 数据的清理或添加:函数参数类型验证 @require_ints 类似请求前拦截数据格式转换 将函数返回字典改为 JSON/YAML 类似响应后篡改为函数提供额外的数据 moc ...
- python 类装饰器 __set___python装饰器代替set get方法实例
对于变量的访问和设置,我们可以使用get.set方法,如下: class student: def __init__(self,name): self.__name = name def get_na ...
- 关于Python的装饰器(1)
Python的装饰器的概念,一直有点微妙.之前在StackOverflow上看过一篇感觉说明的很清楚的介绍: *A decorator must accept a function as an arg ...
- python装饰器函数-python函数装饰器
什么是装饰器 装饰器是一个可调用的对象,其参数是另一个函数(被装饰的函数).装饰器可能会: 1,处理被装饰的函数,然后把它返回 2,将其替换成另一个函数或者对象 若有个名为decorate的装饰器,则 ...
最新文章
- WebSocket 集群解决方案
- Pbsim模拟器的使用
- seaborn系列 (13) | 点图pointplot()
- AngularJS学习篇(十)
- 数据结构【图】—022邻接矩阵的深度和广度遍历
- SpringMVC的数据响应-回写数据
- 敏捷开发的根本矛盾是什么?从业十余年的工程师在思考
- 使用Spring Boot构建REST Web服务
- “听话”的苏宁少东家
- 学习Jsoup(三)
- 如何查看mysql数据库的端口
- 处理Easyui的Datagrid无法及时刷新问题
- 数据库查询前十名和当前信息的排名信息
- 黑马vue实战项目-(二)用户列表开发
- 软件体系结构期末复习(快速入门考试)
- java中移动光标怎么写_java 程序当中无法做到光标跟随
- 高通蓝牙耳机开发方法-周康
- 注册Google的步骤
- 函数分离常数法 oracle,圆锥曲线:椭圆小题解题报告
- 计算机word图表布布局在哪,word中的页面布局在哪里
热门文章
- ipmitool查看内存信息_小技巧:Win7系统中查看电脑内存频率多少的方法
- mybatis插入时间_深入分析MyBatis源码
- 四因素三水平正交试验表_正交实验设计过程
- Javascript:json删除键为指定数据的值
- Javascript特效:获取选中内容分享至微博
- Spring Batch开发简单入门实践
- 在virtualbox上安装64位centos7和virtual增强工具以及设置共享文件夹
- 算法题:(1) 有一个集合R = [a, b, c, d, e, f, g, h, i, j, k, l, m, n, ],....请写出求解这样的一个子集的通用算法。
- 砍掉中国90%的科研人员,对科技发展的影响微乎其微,某教授酒后真言!
- iOS 中 UIView 和 CALayer 的关系