2014-01-21 93 views
1

几个进程每个都将一个文件写入一个目录。目标是控制目录的大小,以便每当它达到大小(S)时,所有进程都会停止写入目录并丢弃它们即将写入的文件。Python中的共享永久存储器

如果由于其中一些文件被删除而导致文件大小比S小,那么进程将恢复写入文件。

看来我需要进程间锁定来实现这种设计。不过,我想也许有一种更简单的方法,因为进程间的锁定在Python中并不容易获得,显然在进程之间存在争用。

的Python 2.7 平台(赢,苹果机,Linux)

回答

1

使用锁定的文件可能是一种选择。例如,每个进程在写入之前检查一个文件,如“/ target_dir/lock”。如果文件存在,进程将不会写入任何内容。所以你必须运行独立的监视进程,它会检查目录大小,并创建或删除锁定文件。

+0

我没有豪华的监控程序。如果没有监视器进程,每个进程都需要更新写入文件的大小,因为它会添加另一个文件(或删除)。它引发了很多争论,但没有显示器。 – Ali

+0

您可以在编写器进程中添加检查。因此,在写入之前,每个进程检查目录大小。如果达到某个阈值,进程将创建锁定文件并停止写入。如果它没有达到一个,但锁定文件存在,进程将删除锁定文件并开始写入。恕我直言,这是可能的,但不清洁的解决方案,单独的监测过程会更好。 –

+0

在每次写入时检查目录大小可能非常昂贵。在Windows上,您实际上必须枚举每个文件并添加大小。 – Ali