簡體   English   中英

Python:StringIO之間共享內存?

[英]python: memory shared between StringIO?

如果這樣做,是否在StringIO之間共享內存? 我的感覺是因為python進程的內存沒有在第6行增加。

In [1]: from StringIO import StringIO
In [2]: s = StringIO()
In [3]: s.write('abcd'*10000000) # memory increases
In [4]: s.tell()
Out[4]: 40000000
In [5]: s.seek(0)
In [6]: a = StringIO(s.read()) # memory DOES NOT increase
In [7]: a.tell()
Out[7]: 0
In [8]: a.read(10)
Out[8]: 'abcdabcdab'

但是我擔心的是,當我刪除這兩個變量時,python進程的內存消耗不再減少了……為什么? 此代碼是否會造成內存泄漏?

當我只使用一個變量時,刪除該變量后內存釋放良好。

我很好奇這是怎么回事。 謝謝。

一個StringIO()對象不會使傳遞給它一個字符串的副本。 不需要,因為字符串不是可變的。

StringIO()對象StringIO()塊讀取數據時,將創建新的字符串對象,這些對象是原始輸入字符串的子字符串。

釋放對象時,內存消耗永遠不會立即下降。 內存分配僅根據OS的需要重新分配,許多類型的(小)對象可以由Python插入以提高效率,並且永遠不會釋放,只能重用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM