2012-12-12 15 views
1

可能重複:
what exactly the python’s file.flush() is doing?書面文件沖洗副作用

我發現,調用flush方法花費許多IO操作,這會導致額外的時間。

我知道如果我在我的腳本中刷新刷新,該文件將不會立即更新。

所以我想知道如果我只是在寫文件而不是讀文件,還有什麼其他副作用從腳本中清除掉?

+0

閱讀有關在[這個問題]的答案沖洗的影響(http://stackoverflow.com/questions/7127075/what-exactly-the-pythons-file-flush-is-doing)。如果你的程序中不需要,那麼不要使用flush。 –

回答

0

副作用?我不完全明白你的意思,但是無論如何,讓我在此之前。

對於文件操作,Python使用操作系統的默認緩衝區,除非您進行其他配置。您可以指定緩衝區大小,無緩衝區或行緩衝區。因此,如果您經常使用flush,則會持續發生IO並且如果您正在清除大量數據(即緩衝區很大),則可能會減慢其他正在運行的可能最終等待IO的程序。

快速且頻繁的IO操作對硬盤的使用壽命不利,它會增加磁盤崩潰的變化。

通常情況下,我遵循的模式是在完成對文件對象的寫入之後,在關閉文件之前在最後完成刷新。

有什麼需要您思考的問題,是否還有其他線程或程序正在讀取同一文件?如果是這種情況,您可能會遇到麻煩!腐敗文件在這裏是非常有可能的。如果您正在考慮將文件用作持久性數據存儲。那麼它是錯誤的做法。爲什麼不考慮使用持久數據庫(如mysql或甚至sqlite)而不是將文件用作數據存儲。