gpt4 book ai didi

python - 序列或迭代器中的 for 循环

转载 作者:行者123 更新时间:2023-12-02 18:33:54 24 4
gpt4 key购买 nike

我有 3 个对象 Item1Item2自定义迭代器。 Item2 与 Item1 相同,但它比 Item1 多实现一个函数 __iter__()__iter__() 将返回一个自定义迭代器。

class Item1():
def __init__(self, stop):
self.stop = stop

def __len__(self):
return self.stop - 1

def __getitem__(self, index):

if index < self.stop:
return index + 1
raise IndexError


class Item2():
def __init__(self, stop):
self.stop = stop

def __len__(self):
return self.stop - 1

def __getitem__(self, index):

if index < self.stop:
return index + 1
raise IndexError

def __iter__(self):
iterator = MyIterator(self.stop)
return iterator


class MyIterator:
def __init__(self, max_num):
self.max_num = max_num
self.index = 0

def __iter__(self):
return self

def __next__(self):
self.index += 1
if self.index <= self.max_num:
return self.index
else:
raise StopIteration

当我使用for循环迭代Item1和Item2时,会得到相同的结果。但是,我想知道内存的使用情况是否相同Item2 是否具有迭代器的优势

Item1 = Item1(100000)
item2 = Item2(100000)

for item in item1:
print(item)

for item in item2:
print(item)

最佳答案

可以通过tracemalloc()查看内存使用情况

https://medium.com/survata-engineering-blog/monitoring-memory-usage-of-a-running-python-program-49f027e3d1ba

您在我的机器上实现的内存使用情况:

item1:当前内存使用量为0.000379MB;峰值为 0.000593MB

item2:当前内存使用量为0.001218MB;峰值为 0.001478MB

item2 需要更多内存

->这是一篇关于差异的帖子What's the difference between __iter__ and __getitem__?

关于python - 序列或迭代器中的 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69061866/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com