我正在使用Python脚本处理大型CSV文件(数以10M行的GB数)。
这些文件具有不同的行长,并且无法完全加载到内存中进行分析。
每行由脚本中的一个函数分别处理。分析一个文件大约需要20分钟,并且看来磁盘访问速度不是问题,而是处理/函数调用。
代码看起来像这样(非常简单)。实际的代码使用Class结构,但这是相似的:
csvReader = csv.reader(open("file","r")
for row in csvReader:
handleRow(row, dataStructure)
鉴于计算需要共享的数据结构,使用多核在Python中并行运行分析的最佳方法是什么?
通常,如何在Python中从.csv一次读取多行以传输到线程/进程?与循环for
在行不健全的非常有效的。
谢谢!
尝试进行基准测试以读取文件并解析每个CSV行,但不执行任何操作。您排除了磁盘访问的可能性,但是仍然需要查看CSV解析是缓慢的还是您自己的代码缓慢。
如果CSV解析很慢,您可能会被卡住,因为我认为没有一种方法可以跳入CSV文件的中间而不进行扫描。
如果是您自己的代码,则可以让一个线程读取CSV文件并将行放入队列,然后让多个线程处理该队列中的行。但是,如果CSV解析本身使速度变慢,请不要理会此解决方案。
问题内容: 我需要构建一个函数来处理大型CSV文件,以便在bluebird.map()调用中使用。考虑到文件的潜在大小,我想使用流媒体。 此函数应接受一个流(一个CSV文件)和一个函数(处理该流中的块),并在读取文件到末尾(已解决)或错误(已拒绝)时返回promise。 所以,我开始: 现在,我有两个相互关联的问题: 我需要限制正在处理的实际数据量,以免造成内存压力。 作为参数传递的函数通常将是异
由于多值字段和维度使用报价,csv读取器读取此文件失败。我的函数(上面代码中的函数f)如果那个逗号在属于同一字段的两个数据之间,就用分号代替逗号,如果那个引号是维度的东西,就用'inch'代替。
问题内容: 什么是在python 2.7中进行并行处理的简单代码?我在网上找到的所有示例都是令人费解的,其中包括不必要的代码。 我如何做一个简单的蛮力整数分解程序,在其中我可以在每个核(4)上分解一个整数?我的真实程序可能只需要2个内核,并且需要共享信息。 我知道并存python和其他库,但是我想将使用的库数保持最少,因此我想使用和/或库,因为它们是python附带的 问题答案: 从python中
问题内容: 我有一个很大的xml文件,其中包含许多子元素。我希望能够运行一些xpath查询。我尝试在Java中使用vtd- xml,但有时会出现内存不足错误,因为xml太大,无法容纳到内存中。是否有替代方法来处理如此大的xml。 问题答案: 尝试http://code.google.com/p/jlibs/wiki/XMLDog 它使用sax执行xpaths,而无需创建xml文档的内存表示形式。
本文向大家介绍Python文本处理之按行处理大文件的方法,包括了Python文本处理之按行处理大文件的方法的使用技巧和注意事项,需要的朋友参考一下 以行的形式读出一个文件最简单的方式是使用文件对象的readline()、readlines()和xreadlines()方法。 Python2.2+为这种频繁的操作提供了一个简化的语法——让文件对象自身在行上高效迭代(这种迭代是严格的向前的)。 为了读
我正在处理非常大的.csv文件,并且正在尝试查找文件中的行数以及其他事情,例如解析为json等。 我的问题是如何克服csv库的限制,因为我不断收到以下错误。 我提供了一个在python3中工作的示例程序,它将返回csv文件中的行数。 但是,当运行1.5GB csv文件时,我仍然会收到这个错误。 在这个问题上所做的任何工作都是非常值得赞赏的。谢谢!