簡體   English   中英

幾個Python程序可以安全地打開CSV文件以同時讀取嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM