我在群集上并行运行了几次python脚本。所有这些目前都写入相同的输出文件。这似乎导致有缺陷的线条。有没有办法锁定"一个程序写入文件并导致另一个程序等到写入完成后的文件?或者我是否必须使用多个输出文件并在之后将它们联合起来?
答案 0 :(得分:2)
你可以使用OS locking mechanism.如果你真的想要那个(因为你提到了一个集群,我假设你是在Unix系统上)。问题:
如果您确实只想拥有一个文件,我认为您最好的选择是设置一个侦听器进程并将消息从每个节点发送到主节点。这个监听器将有一个可以并行写入的堆栈,因此您不必担心彼此等待的进程。您当然必须确保所有相关进程都处于活动状态且工作正常,并且您可以足够快地写入数据,以便内存不会增长太快。
要实现这一点,您可以选择标准库中的JSON RPC,pyzmq(广泛用于商业生产环境)或MPI(专为高性能计算而设计)。