猿问

在 for 循环中销毁实例时 Python 性能提升

我正在使用 Python 脚本读取一些 ASCII 文件,操作它们的值并获得输出。计算是在类实例化中完成的,类似于伪形式


def __init__(input)

  self.input = input

  self.output = function of input 

伪代码,在问号之间有争议的部分,是


open file

read lines

for each lines in file: 

    split line

    construct class instance with input from split-line values

    store instance.output in a help variable (list)

    ?? delete class instance ??

further processing of the help variable

etc

删除类实例是节省时间和内存的障碍还是机会?问题的规模很大(不到 100 万行)。


我很清楚我宁愿从二进制文件中读入,但目前这是行不通的。另外,我选择类结构是因为它的优雅,也许随着脚本的发展,我可以从封装中获得更多的好处。但是,如果建议这样做,我可以在现阶段放弃它。


噜噜哒
浏览 265回答 2
2回答

慕后森

当垃圾收集过程中没有更多引用时,Python 会自动为您销毁实例,因此您不应该自己执行此操作,除非您确实希望在仍有引用时删除该实例。在您的情况下,每次迭代都会创建新实例,并且由于您仅将从实例派生的输出而不是实例本身存储到列表中,因此您不会在下一次迭代中保留对旧实例的任何引用,因此垃圾收集过程将以有效的方式为您销毁实例,因此您不必担心自己进行。自己做实际上会更慢,因为您将使用 Python 代码进行删除,而不是使用纯粹用 C 实现的垃圾收集。
随时随地看视频慕课网APP

相关分类

Go
我要回答