4

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

因此,有时该队列会塞满 100 万条字符串数据。每个项目占用大约 80 字节的内存。

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

4

1 回答 1

0

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

于 2013-01-04T14:14:44.497 回答