Python 垃圾收集在 imap_unordered

Python garbage collect in imap_unordered

在使用池的常见情况下,python 将返回的参数标记为已删除,并且 gc 在一段时间内将从内存中删除该对象,例如

def main():
    for x in pool.imap_unordered(func, args):
        pass

if __name__ == "__main__":
    main()

但是如果启动池没有累积结果,垃圾收集器将如何工作?

def main():
    pool.imap_unordered(func, args)

if __name__ == "__main__":
    main()

如果池一直工作,是否有机会获得过载内存?

迭代生成器而不获取结果的正确方法是标准 for _ in map(): pass,因为 Python 不会为地图生成器中的每个对象分配新内存,而是将每个对象设置在一个区域中。