gpt4 book ai didi

r - 从 R 中的并行进程写入文件时锁定文件

转载 作者:行者123 更新时间:2023-12-03 15:52:14 25 4
gpt4 key购买 nike

我用 parSapply()来自 parallel R 中的包。我需要对大量数据进行计算。即使并行执行也需要数小时,所以我决定使用 write.table() 定期将结果从集群写入文件。 ,因为进程在内存不足或其他一些随机原因时会不时崩溃,我想从它停止的地方继续计算。我注意到我得到的一些 csv 文件行只是在中间被剪掉了,可能是因为多个进程同时写入文件。有没有办法在 write.table() 期间锁定文件的时间?执行,所以其他集群无法访问它,或者唯一的出路是从每个集群写入单独的文件,然后合并结果?

最佳答案

现在可以使用 filelock 创建文件锁( GitHub )
为了便于使用 parSapply()你需要编辑你的循环,这样如果文件被锁定,进程不会简单地退出,而是再试一次或 Sys.sleep()在很短的时间内。但是,我不确定这将如何影响您的表现。
相反,我建议您创建可以保存数据的特定于集群的文件,从而无需锁定文件并且不会降低性能。之后,您应该能够编织这些文件并创建最终结果文件。
如果大小是一个问题,那么您可以使用 disk.frame处理大于系统 RAM 的文件。

关于r - 从 R 中的并行进程写入文件时锁定文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20425071/

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