python-将代码包装在函数中是否可以获得内存效率?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-将代码包装在函数中是否可以获得内存效率?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1809字,纯文字阅读大概需要3分钟。
内容图文
我一直在写一些代码.我通常的方法是首先解决问题的所有部分,在解决问题时创建所需的循环和其他代码,然后,如果我希望重用这些代码,请回头对它进行分组.我认为应该将代码分组以创建函数.
我刚刚注意到,创建函数并调用它们似乎比编写完代码行和删除容器要高效得多.
例如:
def someFunction(aList):
do things to aList
that create a dictionary
return aDict
似乎最终释放的内存比
>>do things to alist
>>that create a dictionary
>>del(aList)
这是预期的行为吗?
编辑添加示例代码
当此功能完成运行时,PF使用率显示增加了约100 mb,filesList包含约800万行.
def getAllCIKS(filingList):
cikDICT=defaultdict(int)
for filing in filingList:
if filing.startswith('.'):
del(filing)
continue
cik=filing.split('^')[0].strip()
cikDICT[cik]+=1
del(filing)
ciklist=cikDICT.keys()
ciklist.sort()
return ciklist
allCIKS=getAllCIKS(open(r'c:\filinglist.txt').readlines())
如果我运行它,则显示增加了近400 mb
cikDICT=defaultdict(int)
for filing in open(r'c:\filinglist.txt').readlines():
if filing.startswith('.'):
del(filing)
continue
cik=filing.split('^')[0].strip()
cikDICT[cik]+=1
del(filing)
ciklist=cikDICT.keys()
ciklist.sort()
del(cikDICT)
编辑
我今天已经在玩这个游戏了.由于我的重点一直放在PF用法上,因此我的观察和问题应该有所改善.不幸的是,我只能在其他任务之间对此this一oke.但是我开始怀疑引用与副本.如果我从列表创建字典,则字典容器是否保存来自列表的值的副本,或者它们是否包含对列表中值的引用?我敢打赌,这些值将被复制而不是被引用.
我注意到的另一件事是,GC列表中的项目是来自已删除容器的项目.那有意义吗?我有一个列表,并假设列表中的每个项目都是[(aTuple),anInteger,[another list]].当我开始学习如何操作gc对象并检查它们时,即使列表已被强制删除并且即使我通过了0,1&,我仍在gc中找到了这些对象.我不记得尝试删除它们的方法的2值.
我感谢人们分享的见解.不幸的是,我一直对弄清楚引擎盖是如何工作感兴趣.
解决方法:
也许您在函数中使用了一些局部变量,这些局部变量在函数末尾通过引用计数隐式释放,而在代码段末尾没有释放?
内容总结
以上是互联网集市为您收集整理的python-将代码包装在函数中是否可以获得内存效率?全部内容,希望文章能够帮你解决python-将代码包装在函数中是否可以获得内存效率?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。