首页 > 编程语言 >【python笔记】弱引用weakref

【python笔记】弱引用weakref

时间:2023-12-02 13:55:04浏览次数:43  
标签:None obj python 笔记 weakref 计数 引用 print

参考书籍
《深度学习入门——自制框架》[日]斋藤康毅

强引用会出现循环引用的情况

class obj():
	pass

a = obj()  # 使用赋值运算,引用计数加1
b = obj()
c = obj()
# 执行到这里,a、b、c的引用计数都为1

a.b = b  # 被对象强引用,引用计数加1
b.c = c
c.a = a
# 执行到这里,a、b、c的引用计数都为2

这样a、b、c三个对象的引用计数都为2,即使执行a = b = c = None,引用计数仍然为1,a、b、c都不会被释放(计数为0时,python会自动释放内存空间)

import weakref 
import numpy as np
a = np.array([1, 2, 3])
b = weakref.ref(a)

print(f"b:{b}")
print(f"a:{a}")
print("使用b()可以访问b引用的对象")

print(f"b() = {b()}")

a = None
print("====== 运行 a = None 后 ======")
print(f"b:{b}")

可以发现运行a = None之后,b引用的对象变成dead了,表明引用的对象已经被删除。
此时再运行print(b()),输出会变成None

标签:None,obj,python,笔记,weakref,计数,引用,print
From: https://www.cnblogs.com/code-pigeon/p/17871504.html

相关文章

  • 反演与容斥 学习笔记
    反演与容斥学习笔记二项式反演函数\(f,g\),有以下结论:\[f_k=\sum_{i=0}^k\binom{k}{i}g_i\Longleftrightarrowg_k=\sum_{i=0}^k(-1)^{k-i}\binom{k}{i}f_i\]证明:考虑右式\[\begin{aligned}&\sum_{i=0}^k(-1)^{k-i}\binom{k}{i}f_k\\=&\sum_{i=0......
  • LLM 学习笔记-transformers库的 PreTrainedModel 和 ModelOutput 到底是什么?
    闲言碎语我在刚开始接触huggingface(后简称hf)的transformers库时候感觉很冗杂,比如就模型而言,有PretrainedModel,AutoModel,还有各种ModelForClassification,ModelForCausalLM,AutoModelForPreTraining,AutoModelForCausalLM等等;不仅如此,还设计了多到让人头皮发麻的各......
  • # yyds干货盘点 # Python如何通过input输入一个键,然后自动打印对应的值?
    大家好,我是皮皮。一、前言前几天在Python最强王者交流群【冯诚】问了一个Python基础的问题,一起来看看吧。问题描述:大佬们,我有个字典如下:dict={'b':2,'a':4,'c':3}如何通过input输入一个键,然后自动打印对应的值?二、实现过程这里【巭孬......
  • Python报错:performance hint: av/logging.pyx:232:5: the GIL to be acquired
     参考:https://stackoverflow.com/questions/77410272/problems-installing-python-av-in-windows-11https://github.com/PyAV-Org/PyAV/issues/1177  ================================  报错信息:C:\Windows.old\Users\chris>pipinstallavDefaultingtouser......
  • conda环境下Python报错:raise MissingCUDAException("CUDA_HOME does not exist, unabl
    conda环境下Python报错:(pytorch)devil@Monster:~$pipinstalldeepspeedCollectingdeepspeedUsingcacheddeepspeed-0.12.4.tar.gz(1.2MB)Preparingmetadata(setup.py)...errorerror:subprocess-exited-with-error×pythonsetup.pyegg_infodid......
  • Python报错:pkg-config could not find libraries ['avformat', 'avcodec', 'avdev
    参考:https://github.com/PyAV-Org/PyAV/issues/238https://pyav.org/docs/6.1.2/installation.html#mac-os-x  =====================  报错信息:C:\Users\liuxue>pipinstallavCollectingavUsingcachedav-0.3.3.tar.gzInstallingcollectedpackages:av......
  • Python正则表达式(小结)
    1.什么是正则表达式?正则表达式(regularexpression,有时简写为RegEx或regex)就是用一组由字母和符号组成的“表达式”来描述一个特征,然后去验证另一个“字符串”是否符合/匹配这个特征。2.应用场景?(1)验证字符串是否符合指定特征,比如验证邮件地址是否符合特定要求等;(2)用来查找字......
  • 【Android逆向】一些零碎的笔记
    *在/sdcard/下的文件无法执行,必须将其拷贝到其它位置执行,如/data/目录,/data/目录中是system分组,可以执行程序;*每个应用都会创建一个对应的应用用户,如:cn.abcpiano.pianist包名的应用,创建了一个u0_a147用户;* getpropro.product.cpu.abi ......
  • 无涯教程-Python - 泊松分布
    泊松分布是显示事件在预定时间段内可能发生的次数的分布,它用于独立事件,这些事件在给定的时间间隔内以恒定的速率发生,泊松分布是一个离散函数,意味着该事件只能按发生或不发生的方式进行度量,这意味着该变量只能按整数进行度量。无涯教程使用具有内置功能的seabornpython库来创建......
  • 笔记06:循环和字符串
    笔记06:循环while循环whileconditionisTrue: statement(s) ifcondition: break else:continueelse:break语句跳出循环体continue语句跳出循环体并回到循环体的判断位置else语句当循环正常结束时,进行else语句for循环forvariablein可迭代对象: statement(s......