gc问题

我一直在WX中看到Destructor的电话,以进行临时对话,并想知道是否是否
这是必需的,如果是这样,为什么正常的GC流不好?
def getdir(self,字幕,默认dir):
dlg = wx.dirdialog(无标题,样式= 1,defaultpath = 1
DefaultDir,pos =(10,10))
res = dlg.showmodal()
pck = dialog.getPath()
dlg.destroy()
如果res == wx.id_ok:
返回PCK
别的:
返回 '​​'
我想将其写为:
def getdir(self,字幕,默认dir):
dlg = wx.dirdialog(无标题,样式= 1,defaultpath = 1
DefaultDir,pos =(10,10))
如果dlg.showmodal()== wx.id_ok:
返回对话框.getPath()
别的:
返回''#可能暗示; DEL 2行?
....而GC一旦范围退出后,就会照顾好事?还是更多
比这棘手吗?

# 回答1


在阳光下,2008年3月9日01:42:01 -0800,Vpalexander写道:
因为没有保证'___del __()被调用或在
完全叫 * *.
再见,
marc'blackjack'rintsch
# 回答2


在3月9日,上午1:51,Marc'Blackjack'Rintsch 因为没有保证'___del __()被调用或在
完全叫 * *.
再见,
马克"二十一点" Rintsch
好吧,这很适合我.关于Python的最不自然的是
适应只让未发行的资源慢跑的想法
在任何地方. :)
" F.Close在哪里?"
"你不需要!"
嗯!
# 回答3


Vince在Sun,2008年3月9日01:57:38 -0800写道:
是的,这是垃圾收集可以鼓励的坏习惯. GC很好
用于管理内存,但不适合管理其他资源,因此,如果是
对象还有其他资源,重要的是要确保
资源是及时发布的,而不是依靠
最终器(__DEL __函数).
cpython使用参考计数,因此通常会公平破坏对象
停止使用后不久.但是Jpython和Ironpython不做
参考计数,因此忘记清理资源可能是
重大问题.
虽然,您仍然不需要f.close,并带有新的语句:
用开放(" myfile")为f:
字符串= f.readline()
#f.close()在此处自动调用,而无需等待
# 垃圾收集.
如果您想在2.5中使用它,则必须编写:
从__future__ in_statement导入
这里最大的优势是,如果块退出,F.Close将被调用
通常,如果有例外.有关更多信息,请参见http://effbot.org/pyref/with.htm.
# 回答4


在3月9日,15:37,我v 是的,这是垃圾收集可以鼓励的坏习惯. GC很好
用于管理内存,但不适合管理其他资源,因此,如果是
对象还有其他资源,重要的是要确保
资源是及时发布的,而不是依靠
最终器(__DEL __函数).
虽然,您仍然不需要f.close,并带有新的语句:
用开放(" myfile")为f:
* * * * string = f.readline()
#f.close()在此处自动调用,而无需等待 * * * *
#加尔巴 GE收集. 仅出于完整性,在较早的Python版本上 始终发布的资源是使用/最终使用: F =打开(...) 尝试: ...处理文件... 最后: f.close() - - Gabriel Genellina

标签: python

添加新评论