我的代码中有一些执行某些工作的工作线程。来自工作的数据被收集到一个包含这些信息的小类中。这个类被放入一个队列中以便在主线程中进行处理。
GC收集此课程的时间是什么时候?
短Sodu例子:
def run(in_q, out_q):
lp = lpClass()
# Do work and add info in class
workToDo = in_q.get_nowait()
while working:
lp.add(work data)
out_q.put_nowait(lp)
# main
t = thread(run, in_q, out_q)
t.start()
in_q.put_nowait(some work)
t.join()
while out_q.not_empty:
lp = out_q.get()
print(lp.getData())
答案 0 :(得分:3)
Python的垃圾收集器通常会抛出对象,不再引用它们。
在您的情况下,这将在while循环中的print()
完成后重新开始 - 用新引用替换lp
中的先前数据。因此不再引用旧对象并收集垃圾。
Afaik,对于多线程程序以及单线程程序,它都是True。
除了python文档之外,this post还有一个关于python中的垃圾收集器何时完成其事情的精心编写的摘要。