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
    

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

  • 相关阅读:
    Angel investor
    [HNOI 2003]消防局的设立
    [USACO 08JAN]Telephone Lines
    [Luogu 2265]路边的水沟
    [NOI 2010]航空管制
    [HNOI 2004]敲砖块
    [Luogu 1730]最小密度路径
    [USACO 13NOV]No Change
    [POJ 1006]生理周期
    [AHOI 2012]树屋阶梯
  • 原文地址:https://www.cnblogs.com/c-x-a/p/12374692.html
Copyright © 2011-2022 走看看