在使用pool的常见情况下,python将返回的args标记为已删除,而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不会为地图生成器中的每个对象分配新的内存,而是将每个对象设置在一个区域中。

关于python - imap_unordered中的Python垃圾收集,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46962814/

10-09 16:38