gpt4 book ai didi

r - 测试缓冲区是否已在 R 中刷新

转载 作者:行者123 更新时间:2023-12-04 16:12:49 32 4
gpt4 key购买 nike

我有一些大文件要处理,我使用几个不同的 I/O 函数来访问它们。最常见的是bigmemory包裹。

在写入文件时,我已经学会了刷新输出缓冲区的艰难方法,否则所有的赌注都将取决于数据是否已保存。然而,这可能会导致一些非常长的等待时间 bigmemory做它的事情(很多分钟)。我不知道为什么会发生这种情况——它并不总是发生,也不容易重现。

有没有办法确定 I/O 缓冲区是否已在 R 中刷新,尤其是对于 bigmemory ?如果操作系统很重要,那么请随意以这种方式限制答案。

如果答案可以推广到bigmemory之外,那太好了,因为我有时会依赖其他内存映射函数或 I/O 流。

如果没有很好的解决方案来检查缓冲区是否已被刷新,是否存在可以假设缓冲区已被刷新的情况? IE。除了使用 flush() .

更新:我应该澄清一下,这些都是二进制连接。 @RichieCotton 指出 isIncomplete() ,虽然帮助文档只提到了文本连接。目前尚不清楚这是否可用于二进制连接。

最佳答案

这是否更令人信服 isIncomplete() 适用于二进制文件?

# R process 1
zz <- file("~/test", "wb")
writeBin(c(1:100000),con=zz)
close(zz)

# R process 2
zz2 <- file("~/test", "rb")
inpp <- readBin(con=zz2, integer(), 10000)
while(isIncomplete(con2)) {Sys.sleep(1); inpp <- c(inpp, readBin(zz2),integer(), 10000)}
close(zz2)

(从帮助(连接)文件中修改。)

关于r - 测试缓冲区是否已在 R 中刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6989088/

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