請原諒這個天真的問題。我試圖監視我的Python代碼的內存使用情況,並遇到了有前途的memory_profiler
軟件包。我有一個關於解釋@profile裝飾器生成的輸出的問題。解釋python的輸出memory_profiler
下面是一個示例輸出,我得到通過運行下面我啞代碼:
dummy.py
from memory_profiler import profile
@profile
def my_func():
a = [1] * (10 ** 6)
b = [2] * (2 * 10 ** 7)
del b
return a
if __name__ == '__main__':
my_func()
通過「蟒蛇dummy.py」呼叫dummy.py返回見下表。
線#內存使用增量行內容
3 8.2 MiB 0.0 MiB @profile
4 def my_func():
5 15.8 MiB 7.6 MiB a = [1] * (10 ** 6)
6 168.4 MiB 152.6 MiB b = [2] * (2 * 10 ** 7)
7 15.8 MiB -152.6 MiB del b
8 15.8 MiB 0.0 MiB return a
我的問題是什麼呢8.2 MIB在表格的第一行對應。我的猜測是,這是python解釋器本身的初始內存使用情況;但我不確定。如果是這樣的話,有沒有辦法從腳本的內存使用量中自動減去這個基線使用量?
非常感謝您的時間和考慮!
Noushin
未來,當詢問第三方模塊(尤其是NumPy之類的知名品牌)時,請提供鏈接。這次我爲你添加了它。 – abarnert
謝謝!請記住這一點:)現在你提到了NumPy,我可以大膽地問你另一個問題嗎?你知道memory_profiler在使用NumPy數組的情況下是否返回準確的數字嗎? (在發現數組的內置「nbytes」模塊之前,我得到了sys.getsizeof調用的腥意,只是想知道我是否應該在這裏期待類似的問題) – user1146372
我不知道。但大概是從操作系統或堆統計或類似的東西獲取內存使用情況的統計信息,而不是步行Python分配器。如果是這樣,即使你無法確定誰在使用它,任何正在使用的內存都將被計數。所以,我會給出10:1的賠率或更好的結果,至少在單線程程序中,您無需擔心。但是,真的,你最好問作者。 – abarnert