2012-02-25 93 views
1

我必須複製並對文件進行一些簡單的處理。我無法將整個文件讀到內存中,因爲它很大。我想出了一段代碼,看起來像這樣:在python中複製緩衝區時優化內存使用

simpleCalculations程序是在這種情況下無關緊要,但我擔心緩存列表的後續內存分配。在某些硬件配置中,內存使用率非常高,這顯然會殺死機器。我想重用緩衝區。這在python 2.6中是否可行?

+0

「在某些硬件配置上,內存使用率變得非常高」?這是個問題嗎?使用大量內存是正常的。有什麼東西壞了?速度太慢了嗎?如果一切正常,你不必擔心。 – 2012-02-25 12:28:26

+0

@ S.Lott殺死機器。我們懷疑司機的問題,但直到我證明這個應用程序將被指責。 – Trismegistos 2012-02-25 12:44:58

+0

然後**更新**將問題替換爲「**非常高」與**實際**情況:它似乎殺死機器。這很重要。 – 2012-02-25 12:47:12

回答

2

我不認爲有任何簡單的解決方法。每次調用它時,file.read()方法都會返回一個新字符串。另一方面,您並不需要擔心內存不足 - 一旦將buffer分配給新讀取的字符串,之前讀取的字符串不再有任何引用,因此其內存會自動釋放(詳情請參閱here)。

2

Python是一個嚴格引用計數的環境,只要您不再有任何引用,緩衝區就會被釋放。

如果你擔心物理內存,但有空餘的地址空間,你可以在你的文件,而不是一次只讀一點。