Reserve memory for list in Python?

前端 未结 7 1007
北恋
北恋 2020-12-15 02:33

When programming in Python, is it possible to reserve memory for a list that will be populated with a known number of items, so that the list will not be reallocated several

相关标签:
7条回答
  • 2020-12-15 03:20

    for Python3:

    import timeit
    from numpy import zeros
    from array import array
    
    def func1():
        N=10**6
        a = []
        app = a.append
        for i in range(N):
            app(i)
    
    def func2():
        N=10**6
        a = [None]*N
        app = a.append
        for i in range(N):
            a[i] = i
    
    def func3():
        N=10**6
        a = array('i', [0]*N)
        for i in range(N):
            a[i] = i
    
    def func4():
        N=10**6
        a = zeros(N,dtype='i')
        for i in range(N):
            a[i] = i
    
    start_time = timeit.default_timer()
    func1()
    print(timeit.default_timer() - start_time)
    
    start_time = timeit.default_timer()
    func2()
    print(timeit.default_timer() - start_time)
    
    start_time = timeit.default_timer()
    func3()
    print(timeit.default_timer() - start_time)
    
    start_time = timeit.default_timer()
    func4()
    print(timeit.default_timer() - start_time)
    

    result:

    0.1655518
    0.10920069999999998
    0.1935983
    0.15213890000000002
    
    1. append()
    2. [None]*N
    3. using module array
    4. using module numpy
    0 讨论(0)
提交回复
热议问题