首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用python-2.7中的析构函数减慢代码速度

调用python-2.7中的析构函数减慢代码速度
EN

Stack Overflow用户
提问于 2018-04-10 10:37:52
回答 1查看 43关注 0票数 0

我使用python2.7处理GRIB和netCDF格式的输入/输出文件。代码可以读取GRIB和netCDF格式的数据,并以用户选择的格式写入。调用del析构函数来释放内存。我的破坏者是这样的:

代码语言:javascript
复制
 def __del__(self):
        """ netCDF : delete the init files and close the dataset
            grib : release grib message (self.msg exists only for GRIB files)
        """
       # GRIB
       if self.msg :
          ga.grib_release(self.msg) 

       # netCDF
       else:
          self.dataset.close()
       try :
           if os.path.isfile(self.fileName): 
                os.remove(self.fileName)
       except :
           pass

使用这个析构函数可以在几次迭代后减慢代码。如果我注释掉GRIB的部分(当我使用netCDF时)或反之亦然,代码将正常运行。但是使用if循环会使代码在读/写(可能是15个文件)后非常慢。有人能帮我指出我可能犯的错误吗?

EN

回答 1

Stack Overflow用户

发布于 2018-04-10 11:05:57

正如在一篇评论中提到的,如果没有更多关于上下文的信息,几乎不可能真正回答你的问题。尽管如此,有几点值得提一下.

首先也是最重要的: 导致的问题比它解决的更多处理正确的资源分配的正确方法要么有一个“清除”方法,然后确保手动调用它(如果您是这个类的唯一用户,并且这是唯一使用它的地方,那么可能就足够了),或者使您的类成为上下文管理器

第二点:让同一个类处理两种不同的格式,并让整个类代码杂乱无章地进行if <this is format one> / else # this is format two检查,这无疑是一种设计风格。将大多数类代码相加对于这两种格式都是相同的,看起来您希望使用一个通用API将特定于格式的部分提取到其他类(每个格式一个),并将所有特定于格式的操作委托给适当的类。这就是所谓的战略模式

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49751488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档