【脚本语言系列】关于Python基础知识

xiaoxiao2021-02-28  11

如何使用slots

使用__slot__ # -*- coding:utf-8 -*- # only for Python 3.x import ipython_memory_usage.ipython_memory_usage as imu class ThisClass(object): def __init__(self, name, address): self.name = name self.address = address imu.start_watching_memory() num = 1024*256 x = [ThisClass(1,1) for i in range(num)] -------------------------------------------------------------------- ImportError Traceback (most recent call last) <ipython-input-9-570d1600168e> in <module>() 1 ----> 2 import ipython_memory_usage.ipython_memory_usage as imu 3 4 class ThisClass(object): 5 def __init__(self, name, address): ImportError: No module named ipython_memory_usage.ipython_memory_usage 使用__slot__ # -*- coding:utf-8 -*- from slots import * class ThisClass(object): __slot__ = ['name', 'address'] def __init__(self, name, address): self.name = name self.address = address num = 1024*256 x = [ThisClass(1,1) for i in range(num)]

什么是slots

使用__slot__可以保证Python运用固定集合来分配存储空间;

为何使用slots

在通常情况下,在对象创建时使用一个字典来保存一个对象的实例属性; 这个字典可以在运行时任意扩充,对于属性不可知的对象自然很有用处; 对于属性可知的对象,这会造成内存资源的浪费。 此外,创建大量的对象时,也会消耗很多的内存。

使用__slot__可以保证Python不用字典方式来分配存储空间;

转载请注明原文地址: https://www.6miu.com/read-250409.html

最新回复(0)