这篇文章主要介绍了python如何从内存地址上加载python对象,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
在平和等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站建设、成都做网站 网站设计制作按需制作,公司网站建设,企业网站建设,成都品牌网站建设,全网整合营销推广,成都外贸网站建设公司,平和网站建设费用合理。在python中我们可以通过id函数来获取某个python对象的内存地址,或者可以通过调用对象的__repr__魔术函数来获取对象的详细信息
def tt(): print(111) print(tt.__repr__()) print(id(tt))
但是不知大家是否想过,其实这个内存地址可以直接加载python对象的。有两种方法:
1. PyObj_FromPtr
在_ctypes包中,就提供PyObj_FromPtr这个api去实现我们的需求。代码如下
def tt(): print(111) print(tt.__repr__()) print(_ctypes.PyObj_FromPtr(id(tt)))
运行结果如下:
2. gc.get_objects
我们也可以通过gc的get_objects方法来实现。先来看一下官方介绍
gc.get_objects() Returns a list of all objects tracked by the collector, excluding the list returned.
大致意思为,获取所有可以追踪的对象。所以,我们可以通过第二种方式来实现从特定内存地址加载python对象
def tt(): print(111) print(tt.__repr__()) for i in gc.get_objects(): if id(i) == id(tt): print(i)
方法很简单,通过gc.get_objects获取所有对象,一一检查这些对象的内存地址是否与给定的内存地址相符,如果相符则返回对象。
感谢你能够认真阅读完这篇文章,希望小编分享的“python如何从内存地址上加载python对象”这篇文章对大家有帮助,同时也希望大家多多支持创新互联成都网站设计公司,关注创新互联成都网站设计公司行业资讯频道,更多相关知识等着你来学习!
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、网站设计器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。