bea*_*ear 2 python memory iterator for-loop sequence
我有 3 个对象Item1、Item2和一个自定义迭代器。Item2 与 Item1 相同,但它__iter__()比 Item1 多实现一个函数,__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
Run Code Online (Sandbox Code Playgroud)
当我使用 for 循环迭代 Item1 和 Item2 时,会得到相同的结果。但是,我想知道内存的使用情况是否相同?Item2是否具有迭代器的优势?
Item1 = Item1(100000)
item2 = Item2(100000)
for item in item1:
print(item)
for item in item2:
print(item)
Run Code Online (Sandbox Code Playgroud)
小智 5
您可以通过tracemalloc()检查内存使用情况
您在我的机器上实现的内存使用情况:
item1:当前内存使用量为0.000379MB;峰值为 0.000593MB
item2:当前内存使用量为0.001218MB;峰值为 0.001478MB
item2 需要更多内存
->here is a post about the Difference __iter__ 和 __getitem__ 之间有什么区别?