繁体   English   中英

Python Map Lamba内存

[英]Python Map Lamba Memory

我有一个对象列表,我想遍历每个对象并更改属性。 (1)map lambda和(2)逐一遍历列表对象之间的内存使用情况是否有所不同。

这是一个简单的示例代码

class F(object):
    def __init__(self):
        self.ID = 0

    def set_ID(self):
        self.ID = 1

number = 1000000
list_objects = [F() for i in xrange(n)]

有两种使用set_ID

单程

map(lambda x: x.set_ID(), list_objects)

其他方式

for obj in list_objects:
    obj.set_ID()

我认为第二种方法更好, map用于将函数应用于iterable每个项目并返回结果列表,因此:

map(lambda x: x.set_ID(), list_objects)

实际上会生成一个1000000 None的列表,因为您没有将其分配给一个变量,它将被立即丢弃并被垃圾回收,因为此列表中的所有项目均为None ,因此不会占用太多内存。 由于lambdaside effectlist_objects中项目的状态发生了变化,我认为这不是使用map的合适方法。

第二种第二种方法在整个过程中都没有创建任何额外的对象。 顺便说一句,它可能只是:

for obj in list_objects:
    obj.set_ID()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM