2013-01-04 26 views
4

我有一个应用程序,我在队列中填充大量数据,然后工作人员清空这些数据。
我正在使用队列,因为它被阻塞,所以我不需要应用锁定所有的时间。Python的队列收集不释放内存

所以有时候这个队列里塞满了100万条字符串数据。每个项目占用大约80个字节的内存。

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

+1

粘贴一些代码的东西,我们不能猜到你的代码... –

+0

我应该在代码中显示什么?这很平常。重要的是后果。只是通常的队列操作'put'和'get' – Shades88

+0

@ Shades88你有没有得到任何解决方案 – vks

回答

0

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

+0

是的,但他的问题是关于减少瞬态内存的足迹,是一个有效的问题恕我直言 – easytiger