我有一个Python应用程序,它执行与大文件的关联。它将这些数据存储在dict中。根据输入文件的不同,dict可能会变得非常大,以至于不再适合内存。这会导致系统挂起,所以我想阻止它。在
我的想法是,总有一些相关性,而这些相关性对于以后的处理来说并不那么相关。这些可以在不改变整体结果的情况下删除。我想在我没有多少记忆的时候做这个。在
因此,我定期检查可用内存。如果它变得太少(比如小于300MB),如果删除不相关的相关性以获得更多空间。这就是理论。在
现在我的问题是:在Python中,在迭代dict时不能从dict中删除。但这正是我需要做的,因为我必须在删除之前检查每个dict条目的相关性。在
通常的解决方案是为迭代创建dict的副本,或者创建一个只包含我想要保留的元素的新dict。不过,可能只剩下几百个内存。所以我不能做太多的复制,因为这可能会再次导致系统挂起。在
我被困在这里了。有谁能想出一个更好的方法来实现我的需要吗?如果在迭代时完全不可能就地删除dict条目,也许有一些解决方法可以拯救我?在
提前谢谢!在
编辑——关于dict的更多信息:
键是元组,指定与数据相关的值。在
这些值是包含相关日期的dict。这些dict的键总是字符串,值是数字(int或float)。在
我通过比较值dicts中的数值和某些阈值来检查相关性。如果这些值低于阈值,则可以删除特定的相关性。在
我不认为你对这个问题的解决是谨慎的。在
如果你有那么多的数据,我建议你在工具箱里找到一些更大的工具,一个建议就是让一个本地的Redis服务器来帮助你。在
看看redis-collections,它将为您提供一个带有redis后端的类似字典的对象,为您提供一个可持续的解决方案。在
祝你好运!在
钥匙大吗?如果没有,可以循环dict以确定应该删除哪些条目;将每个条目的键存储在一个列表中。然后循环这些键并从dict中删除它们
相关问题 更多 >
编程相关推荐