gpt4 book ai didi

python - 防止两个Python程序同时写入同一个文件

转载 作者:行者123 更新时间:2023-12-01 05:16:23 25 4
gpt4 key购买 nike

我在集群上并行运行 python 脚本多次。目前它们都写入同一个输出文件。这似乎会导致线路缺陷。有没有一种方法可以在一个程序写入文件时“锁定”文件并导致另一个程序等待写入完成?或者我是否必须使用多个输出文件并随后将它们合并?

最佳答案

您可以使用OS locking mechanism.如果你真的想要那样(既然你提到了集群,我假设你在 Unix 系统上)。它的问题:

  • 等待时间:一个进程正在写入,其余进程正在等待其完成而不做任何工作。
  • 传输时间:您的文件将位于您的主目录中,物理上位于集群的中央节点上。每台计算机都必须通过网络发送数据,这比写入磁盘还要慢;如果他们必须写很多东西,则相关。 (这实际上取决于集群的详细信息)。在本地硬盘上写入然后在完成后将其发送到您的目录通常会更快。
  • 容易出现错误:实现的细节很奇怪,可能需要一些经验才能正确完成。

如果你真的只想只有一个文件,我认为最好的选择是设置一个监听器进程并将消息从每个节点发送到主节点。这个监听器将有一个可以并行写入的堆栈,因此您不必担心进程相互等待。当然,您必须确保所有相关进程都处于事件状态并正在工作,并且您可以足够快地写入数据,这样内存就不会增长得太快。

要实现此目的,您可以选择标准库中的 JSON RPC、pyzmq(广泛用于商业生产环境)或 MPI(专为高性能计算而设计)。

关于python - 防止两个Python程序同时写入同一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23127727/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com