Python中文
首页
教程
问答
标签
搜索
登录
注册
Python:weakref.完成如果后台线程为ali,则不运行
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我想在对象不可见时使用<a href="https://docs.python.org/3.6/library/weakref.html#weakref.finalize" rel="nofollow noreferrer">^{<cd1>}</a>来清理一些后台线程,但当对象在模块作用域中时,终结器不会运行<strong>(编辑:)。</p> <p>但是,注意,对象没有对活动线程的引用,我看不到不被垃圾收集的理由。</p> <p>显式调用^{{cd2>}解决了问题,但这很不方便。</p> <p>现场演示:<a href="https://ideone.com/kTZsbs" rel="nofollow noreferrer">https://ideone.com/kTZsbs</a></p> <pre><code>import weakref import threading def do(l): l.acquire() class A: def __init__(self): l = threading.Lock() l.acquire() t = threading.Thread(target=do, args=[l]) t.start() weakref.finalize(self, A._finalize, t, l) @staticmethod def _finalize(t, l): print("finalizing") l.release() t.join() a = A() # del a does trigger _finalize though </code></pre>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>您只需要一种方法使<code>a</code>超出范围:</p> <pre><code>def main(): a = A() # when main exits, a will be garbage collected main() </code></pre> <p>输出:</p> ^{pr2}$
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
Python中两个字典的交集
5 回答
python中两个字符串上的异或操作数?
9 回答
Python中两个字符串中的类似句子
7 回答
Python中两个字符串之间的Hamming距离
7 回答
python中两个字符串之间的匹配模式
6 回答
python中两个字符串之间的按位或
10 回答
python中两个字符串之间的数据(字节)切片
3 回答
python中两个字符串之间的模式
3 回答
python中两个字符串作为子字符串的区别
9 回答
Python中两个字符串元组的比较
6 回答
Python中两个字符串列表中的公共字符串
2 回答
python中两个字符串的Anagram测试
6 回答
Python中两个字符串的正则匹配
1 回答
python中两个字符串的笛卡尔乘积
10 回答
Python中两个字符串相似性的比较
3 回答
python中两个字符串语义相似度的求法
8 回答
Python中两个字符置换成固定长度的字符串,每个字符的数目相等
1 回答
Python中两个对数方程之间的插值和平滑数据
5 回答
Python中两个对象之间的And/Or运算符
7 回答
python中两个嵌套字典中相似键的和值
10 回答