在对 python 实现代码拼接的时候将用户的代码拼接成一个类,其中析构函数可能会用来释放一些资源,不确定如果析构函数在调用的时候出错的话,资源会不会被释放。我也手动调用了 gc,这个过程中,看了网上一些说明,没搞明白析构函数是释放完类以后调用了析构函数还是调用完析构释放了整个包含析构的类?
1
deplivesb 2021-09-03 13:18:28 +08:00
python 有析构函数??
|
2
LoNeFong 2021-09-03 14:21:31 +08:00
@zhangdeplives 应该说的是__del__
|
3
frostming 2021-09-03 14:24:23 +08:00
1L 的目的是提醒 __del__ 不能叫做析构函数,如果按照析构函数去理解__del__的作用那多半是会出现大的偏差
|
4
lucays 2021-09-03 14:42:49 +08:00 via Android
什么场景需要自己去实现 del 。。。感觉是其他语言的思维带过来了吧
|
5
learningman 2021-09-03 16:31:05 +08:00 via Android
我写 py 还没用过 del
|
6
renmu123 2021-09-03 16:33:38 +08:00 via Android
Python 一般用 with 来实现
|
7
deplivesb 2021-09-03 16:56:57 +08:00
Note del x doesn’t directly call x.__del__() — the former decrements the reference count for x by one, and the latter is only called when x’s reference count reaches zero.
上面这句话摘自 python 3.9.7 doc 对__del__的注释 如果你真的需要手动的去释放某些"" |
8
princelai 2021-09-04 12:18:45 +08:00 via Android
我之前发帖问过双下划线 del,用于析析构,问题很大,不如去了解下 weakref,可能符合你要求
|
11
paniford OP @zhangdeplives 明白了,谢谢,我下次看文档
|
12
paniford OP 就怕如果 del 的时候出错,gpu 没被释放的话,要不要考虑后端处理一下
|