中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

Python中sizeof函數的最佳實踐是什么

小樊
82
2024-08-27 12:43:09
欄目: 編程語言

在Python中,沒有內置的sizeof函數來直接獲取對象占用的內存大小

import sys

def get_size(obj, seen=None):
    if seen is None:
        seen = set()
    obj_id = id(obj)
    if obj_id in seen:
        return 0
    seen.add(obj_id)

    size = sys.getsizeof(obj)

    if isinstance(obj, dict):
        size += sum([get_size(v, seen) for v in obj.values()])
        size += sum([get_size(k, seen) for k in obj.keys()])
    elif hasattr(obj, '__dict__'):
        size += get_size(obj.__dict__, seen)
    elif hasattr(obj, '__iter__') and not isinstance(obj, (str, bytes, bytearray)):
        size += sum([get_size(i, seen) for i in obj])
    return size

這個函數可以遞歸地計算對象及其所有引用對象的內存大小。請注意,這個函數并不完美,可能會產生一些誤差,因為它無法處理某些特殊類型的對象,如自定義類或C擴展。然而,在大多數情況下,它應該足夠好用。

使用示例:

my_list = [1, 2, 3, "hello", {"key": "value"}]
size = get_size(my_list)
print(f"Size of my_list: {size} bytes")

這將輸出my_list及其引用對象所占用的內存大小(單位為字節)。

0
城固县| 阿图什市| 铁岭县| 壤塘县| 张北县| 绍兴县| 深圳市| 安远县| 萍乡市| 武清区| 合江县| 婺源县| 新营市| 武汉市| 青冈县| 独山县| 淮北市| 亚东县| 镇赉县| 嘉义市| 广德县| 南溪县| 阿尔山市| 东方市| 车致| 双辽市| 沙湾县| 大城县| 龙江县| 咸阳市| 吉隆县| 桓台县| 沈阳市| 久治县| 江安县| 广汉市| 安达市| 宁陕县| 乐昌市| 南陵县| 驻马店市|