如果两个python脚本想要在同一个文件中写入会发生什么?

时间:2011-10-19 10:41:14

标签: python file io

我有一个管道,在某些时候将工作拆分成各种子流程,并行执行相同的操作。因此,他们的输出应该进入同一个文件。

说所有这些进程应该写入同一个文件是否风险太大?或者,如果python发现该资源被占用,它会尝试重试吗?

5 个答案:

答案 0 :(得分:8)

这取决于系统。在Windows中,资源被锁定,您将获得异常。在Linux中,您可以使用两个进程编写文件(可以混合写入的数据)

理想情况下,在这种情况下,您应使用信号量来同步对共享资源的访问。

如果使用信号量太重而无法满足您的需求,那么唯一的选择就是写入单独的文件......

编辑:正如a later post中所指出的那样,资源管理器是另一种处理并发作家的方法

答案 1 :(得分:7)

一般来说,这不是一个好主意,需要花很多精力才能做好。由于写入必须被序列化,因此也可能对可伸缩性产生不利影响。

我建议写入单独的文件并合并(或者将它们作为单独的文件保留)。

答案 2 :(得分:3)

更好的解决方案是实现资源管理器(编写器)以避免两次打开同一文件。该管理器可以使用线程同步机制(threading.Lock)来避免在某些平台上同时访问。

答案 3 :(得分:2)

如何让所有不同的进程将其输出写入队列,并拥有一个读取该队列的进程,并写入该文件?

答案 4 :(得分:0)

使用multiprocessing.Lock()而不是threading.Lock()。只是提醒一句!可能会降低并发处理能力,因为一个进程只是等待锁被释放