gpt4 book ai didi

r - 在 Sys.sleep() 之前未执行的函数

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

我正在编写一个函数,该函数需要在 ping 基于 Web 的 API 时捕获速率限制错误。

我正在使用 tryCatch捕捉错误,在这个函数中,我指定了以下错误函数:

error=function(e) {
warning(paste(e,"\nWaiting an hour for rate limit to reset..."))
Sys.sleep(3600) # Wait an hour for rate-limit to reset
return(user.info(user, ego.count))
}

该函数似乎可以工作,但是在检查脚本的输出日志时,我注意到警告消息直到 才被写入。后 sleep 时间用完了。

我可以在 R 控制台上重现这种行为:
print("Drew sucks")
Sys.sleep(10)

前十秒过去 Drew sucks打印到控制台。在我的函数中,我想在暂停发生之前向用户提供有关此长时间暂停的一些反馈。

是什么导致了这种行为?

最佳答案

您需要设置 immediate.=TRUE到您的警告功能,或设置 options(warn=1) ;并且可能需要添加 flush.console() (在某些操作系统上)在 Sys.sleep() 之前称呼。

foo <- function() {
warning("uh-oh...", immediate.=TRUE)
flush.console()
Sys.sleep(5)
"done"
}
foo()
# Warning in foo() : uh-oh...
# [1] "done"

详细信息在 ?warning 的“详细信息”部分中有详细说明。 .套用一句,“如果 options(warn=0),则在顶级函数完成后存储和打印警告;如果 options(warn=1),则在它们发生时打印它们。”

关于r - 在 Sys.sleep() 之前未执行的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6193873/

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