zoukankan      html  css  js  c++  java
  • Python基础课:测试type 和 isinstance 那个的速度更快

    废话不说,直接上源码

     1 #装饰器
     2 import time
     3 def runtime(func):
     4     def inner_func(*args, **kwargs):
     5         startTime = time.time() 
     6         res = func(*args)
     7         print('run time:{}'.format(time.time()- startTime))
     8         return res
     9     return inner_func
    10 
    11 #测试type函数
    12 def test_type(*args, **kwargs):
    13     types = [str,int,float,bool,tuple,list,set,dict]  #定义一个常用类型列表
    14     type_dict= {}                                     #定义一个返回集类型字典
    15     if args:                                          #确定是否有参数
    16         for arg in args:                              #遍历参数
    17             for t in types:                           #遍历类型
    18                 if type(arg) == t:                    #用type函数匹配类型
    19                     type_dict[str(arg)] = t           #把arg转成键名,t作为键值放入字典
    20                     break                             #中断循环
    21     return type_dict
    22 
    23 #测试isinstance函数
    24 def test_isinstance(*args, **kwargs):
    25     types = [str,int,float,bool,tuple,list,set,dict]
    26     type_dict= {}
    27     if args:
    28         for arg in args:
    29             for t in types:
    30                 if isinstance(arg, t) == True:      #用isinstance函数匹配类型
    31                     type_dict[str(arg)] = t
    32                     break
    33     return type_dict
    34 
    35 @runtime
    36 def for_loop_type(*args, **kwargs):
    37     for i in range(100000):                         #循环调用test_type函数100000次
    38         test_type(args, kwargs)
    39 
    40 @runtime
    41 def for_loop_isinstance(*args, **kwargs):
    42     for i in range(10000):                          #循环调用test_isinstance函数100000次
    43         test_isinstance(args, kwargs)
    44         
    45         
    46 #for_loop_type(1,2,3,4,5,6,7,8,9,2,0,True,('a','b','c'),{'a','b','c'},['a','b','c'],{'name':'tom','age':20})
    47 #for_loop_isinstance(1,2,3,4,5,6,7,8,9,2,0,True,('a','b','c'),{'a','b','c'},['a','b','c'],{'name':'tom','age':20})

    小伙伴自己去测试吧,我测完的数据显示,isinstance比type效率高的不是一个级别的,测完你心里就有数了

  • 相关阅读:
    Eureka的使用
    自定义类加载器
    继承
    Active Objects模式
    Future设计模式
    mysql备份与还原
    多生产者多消费者(第一种方式),基于synchronized,wait,notifyAll
    自己实现阻塞队列(基于数组)
    linux定时任务每隔5分钟向文本追加一行
    自己实现CountDownLatch
  • 原文地址:https://www.cnblogs.com/yuebei/p/7101181.html
Copyright © 2011-2022 走看看