2014-01-21 37 views
1

幾個進程每個都將一個文件寫入一個目錄。目標是控制目錄的大小,以便每當它達到大小(S)時,所有進程都會停止寫入目錄並丟棄它們即將寫入的文件。Python中的共享永久存儲器

如果由於其中一些文件被刪除而導致文件大小比S小,那麼進程將恢復寫入文件。

看來我需要進程間鎖定來實現這種設計。不過,我想也許有一種更簡單的方法,因爲進程間的鎖定在Python中並不容易獲得,顯然在進程之間存在爭用。

的Python 2.7 平臺(贏,蘋果機,Linux)

回答

1

使用鎖定的文件可能是一種選擇。例如,每個進程在寫入之前檢查一個文件,如「/ target_dir/lock」。如果文件存在,進程將不會寫入任何內容。所以你必須運行獨立的監視進程,它會檢查目錄大小,並創建或刪除鎖定文件。

+0

我沒有豪華的監控程序。如果沒有監視器進程,每個進程都需要更新寫入文件的大小,因爲它會添加另一個文件(或刪除)。它引發了很多爭論,但沒有顯示器。 – Ali

+0

您可以在編寫器進程中添加檢查。因此,在寫入之前,每個進程檢查目錄大小。如果達到某個閾值,進程將創建鎖定文件並停止寫入。如果它沒有達到一個,但鎖定文件存在,進程將刪除鎖定文件並開始寫入。恕我直言,這是可能的,但不清潔的解決方案,單獨的監測過程會更好。 –

+0

在每次寫入時檢查目錄大小可能非常昂貴。在Windows上,您實際上必須枚舉每個文件並添加大小。 – Ali