zoukankan      html  css  js  c++  java
  • python deepcopy的替代方案

    from copy import deepcopy
    import marshal
    import timeit
    from multidict import CIMultiDict
    
    
    def test_deepcopy():
        _kwargs = CIMultiDict({
            "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
            "Accept-Encoding": "gzip, deflate, br",
            "Accept-Language": "zh-CN,zh;q=0.9",
            "Host": "www.discogs.com",
            "User-Agent": ("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) "
                           "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"),
        })
        if _kwargs is None:
            _kwargs = dict()
        kwargs = deepcopy(_kwargs)
    
    
    def test_marshal():
        _kwargs = CIMultiDict({
            "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
            "Accept-Encoding": "gzip, deflate, br",
            "Accept-Language": "zh-CN,zh;q=0.9",
            "Host": "www.discogs.com",
            "User-Agent": ("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) "
                           "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"),
        })
        if _kwargs is None:
            _kwargs = dict()
    
        kwargs = marshal.loads(marshal.dumps(dict(_kwargs)))
    
    
    if __name__ == '__main__':
        print(timeit.timeit(stmt=test_deepcopy, number=1000000))
        print("=" * 30)
        print(timeit.timeit(stmt=test_marshal, number=1000000))
    

    测试发现deepcopy是比较耗时的

    第一次
    21.046875760000002
    ==============================
    6.435647065000001
    
    第二次
    19.536858445
    ==============================
    6.0979895100000014
    

    有点问题,如果字典的值为对象那么会有问题。

  • 相关阅读:
    大佬讲话听后感
    P1226快速幂取余
    对拍
    P1017 进制转换
    P1092 虫食算 NOIP2002
    P1003 铺地毯
    P1443 马的遍历
    P1032 字串变换
    P1379 八数码问题
    2-MAVEN 基本命令
  • 原文地址:https://www.cnblogs.com/c-x-a/p/12374692.html
Copyright © 2011-2022 走看看