问题描述
网络上到处都是博客和有关写入到同一文件的多个进程的文件锁定的讨论,但是我在任何地方都找不到解释,为什么实际上在我看来这不是问题。
具体地说,我一直在尝试通过使多个python脚本都尽可能快地追加到同一个文件(紧密循环)来破坏测试,我根本不会导致错误,也从来没有看到任何写入相互破坏(即,每行在下一行之前就已完全写入-写入似乎是原子的,从不交织字节)。在这些测试的某些版本中,我最终可能会输出大量数据,从而生成大量文件(GBs +),这使我相信对于所有实际用途而言,这都不是问题。
# variations on this
for i in range(20000):
with open("C:/Temp/Test.txt","a") as f:
f.write("BBBBn4ls8dhnl,5x8dnthls,ed5hvg,xkdrghx,d85ht,k8hxd4rl,gs8kexdh5lns8exh5.8s4e.8hbxh4y;8s4ehlg8os4e.o8hjex5ln.8hsb45olysghjex4m.o8hbe5,8hlsem.o58ivhsex.4dmo8rehx4.or8awgseh5hse4ysdx5hbr5rdth"*20 + "\n")
这感觉太巧合了,感觉好像它一定是某人设计的,但是在什么层次上-它是硬件(SSD这么快,也许有些缓冲吗?),驱动程序,OS,Python吗?
此功能非常有用,如果堆栈中有人致力于这项工作,那么我们可能应该对使用它感到满意。但是,如果我知道它为什么起作用,我会更愿意依靠它。
我一直在使用Python 3.8在Windows 10,NTFS上进行测试。
替代问题:
任何人都可以通过以下方式提供一段附加到文件的代码,并显示多个相互“干扰”的附加内容: a)引起异常 b)导致一个写入被另一个进程的另一个写入中断。 (例如,write(“ ABCD”)和write(“ 1234”)会导致“ AB1C23D4”或类似的结果。
有可能吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)