[英]Can several Python programs safely open a CSV file for reading at the same time?
我想同時使用多個進程讀取一個大型CSV,每個CPU內核一個。 每個文件都將傳遞文件名和偏移量,然后使用
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], ...)
打開文件以進行並發讀取,然后像這樣seek
,然后縮放到特定偏移量是否有問題?
是的,可以從文件讀取多個進程,而不會破壞讀取的數據。 一種競爭性write
可能會使所有讀者無效。
但是,執行此操作的實用程序取決於您的設備。 如果您有一台物理設備需要等待介質旋轉或放置一個讀取頭,則您的進程將相互競爭該資源。 也許更糟的是,在大多數情況下,預測和預取軟件可能會猜測錯誤 ,從而降低了讀取性能。
如果您的情況不是這樣,也許是一些多通道直接訪問讀取介質,那么實際上可以為您提供更快的性能。 在這種情況下,請注意驅動程序的緩沖功能,這樣您就不會過載,而只會改變瓶頸。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.