如果两个Python脚本想写入同一个文件,会发生什么?
我有一个工作流程,它在某个阶段会把任务分成多个子进程,这些子进程同时做相同的事情。因此,它们的输出应该写入同一个文件。
这样说所有这些进程都应该写入同一个文件,是不是太冒险了?或者说,Python会在发现这个资源被占用时尝试重新写入吗?
5 个回答
3
一个更好的解决办法是实现一个资源管理器(写入器),这样就可以避免重复打开同一个文件。这个管理器可以使用线程同步机制(threading.Lock
)来防止在某些平台上同时访问同一个文件。
12
这跟你用的系统有关。在Windows系统中,资源会被锁住,这样你就会遇到异常情况。而在Linux系统中,你可以让两个进程同时写这个文件(不过写入的数据可能会混在一起)。
在这种情况下,最好使用信号量来同步对共享资源的访问。
如果使用信号量对你来说太复杂了,那唯一的选择就是把数据写到不同的文件里……
编辑:正如eye在后面的帖子中提到的,资源管理器也是处理多个写入者的另一种选择。
8
总的来说,这样做不是个好主意,而且要花很多心思才能做好。因为写入操作需要一个接一个地进行,这可能会影响系统的扩展性,也就是当你需要处理更多数据时,可能会变得很慢。
我建议你把数据写到不同的文件里,然后再合并这些文件(或者就直接保留成多个文件也可以)。