2013-01-04 70 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