在Python中并行处理大型.csv文件

我正在使用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解析本身使速度变慢,请不要理会此解决方案。

以上是 在Python中并行处理大型.csv文件 的全部内容, 来源链接: utcz.com/qa/397567.html

回到顶部