几个Python程序可以安全地打开CSV文件以便同时读取吗?

时间:2018-05-11 18:12:07

标签: python file csv concurrency

我想使用多个进程同时读取一个大型CSV,每个CPU核心一个。每个都将传递文件名和偏移量并使用

打开文件
 CX3$Z6SQLCXTPPVPJP6SQLXD384K7FP

打开文件进行并发读取是否有问题,然后使用file_offset, lines_to_read = ... #Passed to each process with open(filename, 'r') as f: f.seek(offset) for row_count, row in enumerate(csv.reader(f)): if row_count == lines_to_read: break do_stuff(row[0], row[1], ...) 这样缩放到特定的偏移量?

1 个答案:

答案 0 :(得分:2)

是的,倍数进程可以从文件读取,而不会破坏读取的数据。一个竞争write可能使所有读者无效。

但是,这样做的效用取决于您的设备。如果您的物理设备需要等待中等旋转或定位读取头,则您的进程将相互竞争该资源。也许更糟糕的是,在大多数情况下,预测和预取软件可能会猜测错误降低读取性能。

如果你的情况不同,也许是一些多通道直接访问读取介质,那么这确实可以为你提供更快的性能。在这种情况下,请注意你的驾驶员的缓冲能力,这样你就不会超负荷,只是改变你的瓶颈。