有沒有辦法中止python寫入操作,使操作系統感覺不需要將未寫入的數據刷新到光盤?寫入後中止緩衝到磁盤?
我正在寫數據到USB設備,通常是很多兆字節。我在寫入時使用了4096個字節作爲我的塊大小,但看起來Linux很早就緩存了大量數據,並將其慢慢寫入USB設備。如果在寫入過程中的某個時候,我的用戶決定取消,我希望應用立即停止寫入。我可以看到從應用程序停止流動數據到USB活動指示燈停止閃爍之間存在延遲。幾秒鐘,通常高達約10秒。我發現應用程序保存在close()方法中,我假設,等待操作系統完成寫入緩衝數據。每次寫入後我都調用flush(),但這對延遲沒有任何影響。我已經搜索了python文檔的答案,但沒有發現任何東西。
這完全取決於OS和文件系統。 「正確的」行爲(在正常情況下,異步掛載)是close()立即返回;它應該只等待刷新,如果你明確fdatasync()。你不可能找到一種便攜的方式來改變這種行爲,因爲它會在各個系統之間變化很大。 (從XP左右開始,Windows甚至不會在默認情況下將緩存寫入USB驅動器。) –