美文网首页
我们可以使用python变量来保存整个文件吗?

我们可以使用python变量来保存整个文件吗?

作者: 919b0c54458f | 来源:发表于2019-01-26 10:37 被阅读9次

如果我们知道所有文件都将被加载到内存中并且我们可以负担得起,

在 python变量中加载整个文件(可能是二进制文件)有什么缺点(如果有的话)或限制(如果有的话).如果这在技术上是可行的,应该避免这种情况,为什么?

关于文件大小问题,应该限制此解决方案的最大大小?为什么?

实际的加载代码可以是 this stackoverflow entry 中提出的代码.

示例代码是:

def file_get_contents(filename):

with open(filename) as f:

return f.read()

content = file_get_contents('/bin/kill')

... code manipulating 'content' ...

[编辑]

想到的代码操作(但可能不适用)是标准列表/字符串运算符(方括号,’符号)或一些字符串运算符(‘len’,’in’运算符,’count’,’endswith’/’ startwith’,’split’,’translation’…).

虽然你得到了很好的回答,但似乎没有人回答你问题的这一部分(正如你在问题中提出许多问题时经常发生的那样; – )……:

Regarding file size concerns, to what maximum size this solution should be limited ?. And why ?

最重要的是,这个特定的Python进程实际使用了多少物理RAM(所谓的“工作集”),而不会过度惩罚整个系统性能的其他方面.如果你的“工作集”超过了物理RAM,你将进行分页并交换到磁盘,你的性能会迅速下降(直到所谓的“颠簸”状态基本上所有可用的周期都会进入获取页面进出的任务,实际工作量可以忽略不计.

除此之外,一个相当适度的数量(一般来说最多几MB)可能会被可执行代码(Python自己的可执行文件,DLL或.so)以及主动的字节码和一般支持数据结构所占用.在记忆中需要;在一台没有做其他重要或紧急任务的典型现代机器上,与整体可用的千兆字节RAM相比,您几乎可以忽略这一开销(尽管嵌入式系统的情况可能不同等).

其余的都可用于您的数据 – 包括您正在读入内存的此文件,以及任何其他重要的数据结构.文件数据的“修改”通常可以(暂时)占用文件内容大小的两倍(如果您将其保存在字符串中) – 当然,如果您保留一份副本旧数据以及制作新的修改副本/版本.

因此,对于典型的现代32位机器上的“只读”使用,例如总体上2GB的RAM,读入内存(比方说)1.5 GB应该没问题;但如果你正在进行“修改”,那么它必须大大小于1 GB(如果你在内存中有其他重要的数据结构,那就更少了!).当然,在具有64位构建的Python,64位操作系统和16 GB RAM的专用服务器上,实际限制在非常不同之前 – 大致与实际上可用RAM的大不相同的比例.

例如,King James的圣经文本可下载 here (解压缩)大约4.4 MB;因此,在具有2 GB RAM的计算机中,您可以在内存中保留大约400个略微修改过的副本(如果没有其他请求内存),但是,在具有16(可用且可寻址)GB的RAM的计算机中,您可以保持超过3000份这样的副本.

进群“960410445” 即可获取数十套PDF!

相关文章

  • 我们可以使用python变量来保存整个文件吗?

    如果我们知道所有文件都将被加载到内存中并且我们可以负担得起, 在 python变量中加载整个文件(可能是二进制文件...

  • 模块

    模块是一个保存了Python代码的文件,其中可以包含变量、函数或类的定义,也可以包含其他各种Python语句。使用...

  • robot数据分层

    使用yaml导入变量 使用yaml保存配置文件,然后直接导入,可以获取环境变量 在robot中,引入该yaml文件...

  • 2018-04-05

    文件与文件路径读写文件用shelve模块保存变量 1 python 读写文件 1.1 文件与文件路径 window...

  • 处理cookie

    保存到变量和保存到文件两种方式 请参考:http://python.jobbole.com/81344/

  • Python shelve模块保存变量

    利用shelve模块,保存python程序中的变量到二进制shelf文件中。 将变量写进文件中,shelfFile...

  • Robot Framework 使用变量文件

    资源文件里面提供了一些公共使用的变量,实际上也可以使用 python 模块文件提供公共变量给 RF 使用,只需要直...

  • Python 列表

    我们可以使用Python列表保存一系列数据。 Python中,列表类型用[]来表示。 1、定义列表 例:定义列表 ...

  • 修改linux默认python版本

    在系统级修改 Python 版本 我们可以使用update-alternatives来为整个系统更改 Python...

  • 【语法基础】Javas cript变量的声明和使用

    变量是用来保存信息的容器。 变量的声明 Javas cript使用关键字var来声明变量,可以先声明后赋值,也可以...

网友评论

      本文标题:我们可以使用python变量来保存整个文件吗?

      本文链接:https://www.haomeiwen.com/subject/odzbjqtx.html