gpt4 book ai didi

macos - Rcpp:Mac 显示加载轮并且几乎卡住

转载 作者:行者123 更新时间:2023-12-04 05:33:54 25 4
gpt4 key购买 nike

我创建了一个依赖于 Rcpp 的 R 包。
这个包中的一个函数应该在每 n 次迭代时显示打印语句。
所以我希望每隔几秒钟在 R 控制台上看到一个新行。

奇怪的是,当我在 R GUI 中运行我的函数时,光标变成了一个加载轮,R“几乎”卡住了。计算完成后,加载轮消失一次。

这种情况的最小例子总结如下:

library(inline)
library(Rcpp)
test <- cxxfunction(
signature(),
body= '

RNGScope scope;
for (int i = 0; i < 100; i++)
{
sleep(1); // sleep one second at each iteration. this sleep is
// replaced by something in my code
if (i%20==0) Rprintf("\v%d iterations are done...",i);
}

return wrap(1);
' ,
plugin="Rcpp"
)

test()// freeze for 100 seconds!

我还发现,如果代码在终端上运行,新行会按照我的预期每 20 秒出现一次。
但我更喜欢在 R GUI 上运行它。

如果有人能告诉我为什么会这样,我将不胜感激..

我正在使用 Mac。

最佳答案

问题是关于 Mac 上的 R.app,而不是 Windows 上的 Rgui。下面的解决方案对我有用:使用 R_FlushConsole 和 R_ProcessEvents 跟随 Rprintf,如下所示:

RNGScope scope;
for (int i = 0; i < 100; i++) {
sleep(1); // sleep one second at each iteration. this sleep is
// replaced by something in my code
if (i%20==0) {
Rprintf("\v%d iterations are done...\n",i);
R_FlushConsole();
R_ProcessEvents();
}

return wrap(1);

关于macos - Rcpp:Mac 显示加载轮并且几乎卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12225049/

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