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 用装饰器便捷实现多线程相关推荐

  1. python装饰器函数-Python精进-装饰器与函数对象

    本文为<爬着学Python>系列第四篇文章. 从本篇开始,本专栏在顺序更新的基础上,会有不规则的更新. 在Python的学习与运用中,我们迟早会遇到装饰器,这个概念对于初识装饰器的新手来说 ...

  2. Python之装饰器

    Python之装饰器 在不修改函数调用方式的前提下,也不能修改函数内部源代码!!!! 例如: 在每个季度公司发绩效,统计每个人的代码执行效率.咱们总不能是每个函数里加time模块吧. import t ...

  3. Python设计模式-装饰器模式

    Python设计模式-装饰器模式 代码基于3.5.2,代码如下; #coding:utf-8 #装饰器模式class Beverage():name = ""price = 0.0 ...

  4. 浅谈Django的中间件与Python的装饰器

    浅谈Django的中间件 与Python的装饰器 一.原理 1.装饰器是Python的一种语法应用,利用闭包的原理去更改一个函数的功能,即让一个函数执行之前先到另外一个函数中执行其他需求语句,在执行该 ...

  5. Python的装饰器

    详解Python的装饰器 本文源码 https://github.com/tobyqin/python_decorator Python中的装饰器是你进入Python大门的一道坎,不管你跨不跨过去它都 ...

  6. python 日志 装饰器_【Python】装饰器实现日志记录

    好的日志对一个软件的重要性是显而易见的.如果函数的入口都要写一行代码来记录日志,这种方式实在是太低效了,但一直没有找到更好的方法.后来用python写一些软件,了解到python的装饰器功能时,突然人 ...

  7. python中装饰器的作用_Python装饰器详解,详细介绍它的应用场景

    装饰器的应用场景附加功能 数据的清理或添加:函数参数类型验证 @require_ints 类似请求前拦截数据格式转换 将函数返回字典改为 JSON/YAML 类似响应后篡改为函数提供额外的数据 moc ...

  8. python 类装饰器 __set___python装饰器代替set get方法实例

    对于变量的访问和设置,我们可以使用get.set方法,如下: class student: def __init__(self,name): self.__name = name def get_na ...

  9. 关于Python的装饰器(1)

    Python的装饰器的概念,一直有点微妙.之前在StackOverflow上看过一篇感觉说明的很清楚的介绍: *A decorator must accept a function as an arg ...

  10. python装饰器函数-python函数装饰器

    什么是装饰器 装饰器是一个可调用的对象,其参数是另一个函数(被装饰的函数).装饰器可能会: 1,处理被装饰的函数,然后把它返回 2,将其替换成另一个函数或者对象 若有个名为decorate的装饰器,则 ...

最新文章

  1. WebSocket 集群解决方案
  2. Pbsim模拟器的使用
  3. seaborn系列 (13) | 点图pointplot()
  4. AngularJS学习篇(十)
  5. 数据结构【图】—022邻接矩阵的深度和广度遍历
  6. SpringMVC的数据响应-回写数据
  7. 敏捷开发的根本矛盾是什么?从业十余年的工程师在思考
  8. 使用Spring Boot构建REST Web服务
  9. “听话”的苏宁少东家
  10. 学习Jsoup(三)
  11. 如何查看mysql数据库的端口
  12. 处理Easyui的Datagrid无法及时刷新问题
  13. 数据库查询前十名和当前信息的排名信息
  14. 黑马vue实战项目-(二)用户列表开发
  15. 软件体系结构期末复习(快速入门考试)
  16. java中移动光标怎么写_java 程序当中无法做到光标跟随
  17. 高通蓝牙耳机开发方法-周康
  18. 注册Google的步骤
  19. 函数分离常数法 oracle,圆锥曲线:椭圆小题解题报告
  20. 计算机word图表布布局在哪,word中的页面布局在哪里

热门文章

  1. ipmitool查看内存信息_小技巧:Win7系统中查看电脑内存频率多少的方法
  2. mybatis插入时间_深入分析MyBatis源码
  3. 四因素三水平正交试验表_正交实验设计过程
  4. Javascript:json删除键为指定数据的值
  5. Javascript特效:获取选中内容分享至微博
  6. Spring Batch开发简单入门实践
  7. 在virtualbox上安装64位centos7和virtual增强工具以及设置共享文件夹
  8. 算法题:(1) 有一个集合R = [a, b, c, d, e, f, g, h, i, j, k, l, m, n, ],....请写出求解这样的一个子集的通用算法。
  9. 砍掉中国90%的科研人员,对科技发展的影响微乎其微,某教授酒后真言!
  10. iOS 中 UIView 和 CALayer 的关系