Python的Queue集合不释放内存

时间:2013-01-04 14:09:33

标签: python multithreading

我有一个应用程序,我在队列中填充大量数据,然后工作人员清空该数据 我正在使用队列,因为它被阻止,所以我不需要一直应用锁。

因此,有时候该队列中填充了100万个字符串数据项。每个项目占用大约80个字节的内存。

在某些情况下,在使用高峰时,python开始占用大约3 GB的内存。然后,当消费者清空整个队列时,python仍然占用3 GB的内存。我正在使用ps命令检查内存。这是什么现象?这是因为第一个地方的队列膨胀导致内存占用率高吗?如果是这样,可以做些什么来控制它?在python中还有其他更好的集合作为队列的替代吗?

1 个答案:

答案 0 :(得分:0)

Python(通常)不会将其用于操作系统的内存返回。队列为空后,您的进程将保留分配给队列的内存。如果你要向队列添加另外3GB的数据,Python应该重用它已经拥有的内存,而不是从操作系统请求更多(即你不应该看到它的内存分配进一步增长)。