1. 本际云推荐 - 专业推荐VPS、服务器,IDC点评首页
  2. 云主机运维
  3. VPS运维

pythonmemory_profiler库制作器和迭代器cpu占用的时间分析

Python memory_profiler库简介及其对迭代器CPU占用时间分析

大家好,我是本际云服务器推荐网的小编小本本,在本篇文章中将为大家详细介绍Python memory_profiler库的制作器和迭代器CPU占用的时间分析。

pythonmemory_profiler库制作器和迭代器cpu占用的时间分析

未进行计算时,生成器和list空间占用

在未进行计算的情况下,对于列表和迭代器而言,它们的空间占用情况是有所不同的。具体来说,使用生成器时不会占用空间,但列表和迭代器则会有所占用。

以下是示例代码:

import time
from memory_profiler import profile

profile(precision=4)

def list_fun():
    start = time.time()
    total = ([i for i in range(5000000)])
    print('iter_spend_time:', time.time() - start)

@profile(precision=4)
def gen_func():
    gen_start = time.time()
    total = (i for i in range(5000000))
    print('gen_spend_time:', time.time() - gen_start)

list_fun()
gen_func()

上述代码会打印出已讲解的编码。第一行表明已剖析编码的号码,第二列(Mem应用情况)表明实行当列后Python编译器的内存使用情况。第三列(增长)表明现阶段行相较于最后一行的运行内存差别。最终某列(行具体内容)打印出已讲解的编码。

剖析结果表明,列表和迭代器在未进行计算时会占用空间,而生成器则不会。

迭代器与制作器CPU占用时间分析

在对列表和迭代器进行计算时,它们的CPU占用情况也是不同的。以下是示例代码:

import time
from memory_profiler import profile

profile(precision=4)

def iter_fun():
    start = time.time()
    total = sum([i for i in range(10000000)])
    print('iter_spend_time:', time.time() - start)

@profile(precision=4)
def gen_func():
    gen_start = time.time()
    total = sum(i for i in range(10000000))
    print('gen_spend_time:', time.time() - gen_start)

iter_fun()
gen_func()

上述代码对列表和生成器使用sum内置函数求和10000000个数据信息。结果发现列表的CPU占用比较大,而生成器的耗费时间则大约是列表的二倍。个人认为,这是因为制作器在迭代更新数据与测算立即持续变换,导致耗时较长,但是CPU占用较小;而迭代器目标则是先将所有数据储存在运行内存中(尽管占用内存,但载入比再度迭代更新要快些),因此CPU占用相对较大。

迭代器、生成器与列表共同使用sum计算时间比较

以下是示例代码:

import time
from memory_profiler import profile

profile(precision=4)

def list_fun():
    start = time.time()
    list_data = [i for i in range(5000000)]
    total = sum(list_data)
    print('list_spend_time:', time.time() - start)

def iter_fun():
    start = time.time()
    total = sum(iter([i for i in range(5000000)]))
    print('iter_spend_time:', time.time() - start)

def gen_func():
    gen_start = time.time()
    total = sum(i for i in range(5000000))
    print('gen_spend_time:', time.time() - gen_start)

list_fun()
iter_fun()
gen_func()

我们对列表、迭代器和生成器共同使用sum计算5000000个数据的时间进行比较。结果显示,列表+sum和迭代器+sum计算时间差不多,而生成器+sum计算的时间几乎是两者的一倍。

以上就是本篇文章对Python memory_profiler库制作器和迭代器CPU占用的时间分析的详细介绍,希望对大家有所帮助。

原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/6801.html