6

我花了一周的时间处理一些粗糙的文本文件——一些在数亿行范围内。

我使用 python 打开、解析、转换和输出这些文件。我一直在使用 SSD 在大型 8 处理器、16 核 EC2 单元上并行运行这些作业,通常一次运行 6 个 -8 个。

我会说 0.001% 的写入输出很糟糕,例如:

 Expected output:  |1107|2013-01-01 00:00:00|PS|Johnson|etc.

 Actual output:    |11072013-01-01 00:00:00|PS|Johnson|etc.
               or  |1107|2013-01-01 :00:00|PS|Johnson

几乎总是,问题不在于 GIGO,而在于 Python 未能编写分隔符或日期字段的一部分。因此,我假设我正在用这些作业使 SSD 超载,或者更确切地说,计算机无法根据驱动器的写入争用来限制 python。

我的问题是:我如何从这个盒子中获得最快的处理而不引起这些“写”错误?

4

1 回答 1

1

您是使用multiprocessing模块(单独的进程)还是仅使用线程进行并行处理?

我非常怀疑SSD是问题所在。或者蟒蛇。但也许csv模块有竞争条件并且不是线程安全的?

另外,请检查您的代码。和输入。“坏”的写入是否一致?你能复制它们吗?你提到了 GIGO,但并没有真正排除它(“几乎总是,......”)。

于 2013-07-26T12:58:26.650 回答