我有几个脚本。他们每个人都做了一些计算,完全独立于其他人。完成这些计算后,它们将保存到磁盘并更新记录。
记录由类的实例维护,该类将自身保存到磁盘。我希望在多个脚本中使用单个记录实例(例如,record_manager = RecordManager(file_on_disk)
。然后record_manager.update(...)
);但我现在无法做到这一点,因为在更新记录时,可能会对磁盘上的同一文件进行并发写入访问,从而导致数据丢失。所以我为每个脚本都有一个单独的记录管理器,然后我稍后手动合并记录。
在解决并发写访问问题的所有脚本中使用单个实例的最简单方法是什么?
我正在使用macOS(High sierra)和linux(Ubuntu 16.04)。
谢谢!
答案 0 :(得分:0)
要为此构建自定义解决方案,您可能需要编写一个简短的新排队模块。此排队模块将单独具有对文件的写访问权,并从代码中的现有模块传递写操作。
队列逻辑和逻辑应该是一个非常简单的队列架构。
python中可能还存在一些库来处理这个问题,这会避免你编写自己的队列类。
最后,你的操作系统可能会以某种方式处理整个事情,而不管是python。