Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中逐行读取文件的效率_Python_Performance_File - Fatal编程技术网

Python中逐行读取文件的效率

Python中逐行读取文件的效率,python,performance,file,Python,Performance,File,现在我正在编写一些Python代码来处理大量的twitter文件。这些文件太大,无法放入内存。要与他们合作,我基本上有两个选择 我可以将这些文件分割成可以放入内存的较小文件 我可以一行一行地处理这个大文件,这样我就不需要一次将整个文件放入内存。为了便于实施,我更喜欢后者 但是,我想知道是否将整个文件读入内存,然后从内存中对其进行操作会更快。看起来,从磁盘上一行一行地连续读取文件可能会很慢。但是,我仍然不完全理解这些进程在Python中是如何工作的。有人知道逐行读取文件是否会导致我的代码比将整个文

现在我正在编写一些Python代码来处理大量的twitter文件。这些文件太大,无法放入内存。要与他们合作,我基本上有两个选择

  • 我可以将这些文件分割成可以放入内存的较小文件

  • 我可以一行一行地处理这个大文件,这样我就不需要一次将整个文件放入内存。为了便于实施,我更喜欢后者


  • 但是,我想知道是否将整个文件读入内存,然后从内存中对其进行操作会更快。看起来,从磁盘上一行一行地连续读取文件可能会很慢。但是,我仍然不完全理解这些进程在Python中是如何工作的。有人知道逐行读取文件是否会导致我的代码比将整个文件读入内存并从内存中进行操作慢吗?

    要真正快速读取文件,请查看模块。这将使整个文件显示为一大块虚拟内存,即使它比可用RAM大得多。如果您的文件大于3或4G字节,那么您将希望使用64位操作系统(以及64位Python构建)


    我已经对大小超过30 GB的文件执行了此操作,并取得了良好的效果。

    如果要逐行处理文件,只需将文件对象用作迭代器即可:

    for line in open('file', 'r'):
        print line
    

    这是相当高效的内存;如果希望一次处理一批行,还可以使用file对象的
    readlines()
    方法和sizehint参数。这将读取sizehint字节加上足够的字节数以完成最后一行。

    为什么不尝试逐行读取并查看?如果它对你有效,那么它是很好的,并不是说从那里改变它会很难。它总是取决于“大规模”有多大。一个希望有用的答案: