반응형
R에서 실행을 일시 중지하고, 자고, X초 동안 기다리도록 하는 방법은 무엇입니까?
지정된 시간(초 또는 밀리초) 동안 R 스크립트를 일시 중지하는 방법은 무엇입니까?많은 언어에서, 다음과 같은 것이 있습니다.sleep
기능, 그러나?sleep
데이터 세트를 참조합니다.그리고.?pause
그리고.?wait
존재하지 않습니다.
의도된 목적은 셀프 타임 애니메이션을 위한 것입니다.원하는 솔루션은 사용자 입력 없이 작동합니다.
봐help(Sys.sleep)
.
예를 들어, 에서?Sys.sleep
testit <- function(x)
{
p1 <- proc.time()
Sys.sleep(x)
proc.time() - p1 # The cpu usage should be negligible
}
testit(3.7)
양보
> testit(3.7)
user system elapsed
0.000 0.000 3.704
다른 중요한 우선 순위가 높은 프로세스가 병렬로 실행되는 것처럼 CPU 사용량이 매우 높은 경우에는 Sys.sleep()이 작동하지 않습니다.
이 코드는 저에게 효과가 있었습니다.여기서 2.5초 간격으로 1에서 1000까지 인쇄합니다.
for (i in 1:1000)
{
print(i)
date_time<-Sys.time()
while((as.numeric(Sys.time()) - as.numeric(date_time))<2.5){} #dummy while loop
}
TL;DRsys_sleep
안정적이고 정확한 새로운 수면 기능
우리는 이미 알고 있습니다.Sys.sleep
CPU 사용량이 매우 높은 경우와 같이 예상대로 작동하지 않을 수 있습니다.
그것이 제가 높은 품질의 기능을 준비하기로 결정한 이유입니다.microbenchmark::get_nanotime()
그리고.while/repeat
기계학
#' Alternative to Sys.sleep function
#' Expected to be more stable
#' @param val `numeric(1)` value to sleep.
#' @param unit `character(1)` the available units are nanoseconds ("ns"), microseconds ("us"), milliseconds ("ms"), seconds ("s").
#' @note dependency on `microbenchmark` package to reuse `microbenchmark::get_nanotime()`.
#' @examples
#' # sleep 1 second in different units
#' sys_sleep(1, "s")
#' sys_sleep(100, "ms")
#' sys_sleep(10**6, "us")
#' sys_sleep(10**9, "ns")
#'
#' sys_sleep(4.5)
#'
sys_sleep <- function(val, unit = c("s", "ms", "us", "ns")) {
start_time <- microbenchmark::get_nanotime()
stopifnot(is.numeric(val))
unit <- match.arg(unit, c("s", "ms", "us", "ns"))
val_ns <- switch (unit,
"s" = val * 10**9,
"ms" = val * 10**7,
"us" = val * 10**3,
"ns" = val
)
repeat {
current_time <- microbenchmark::get_nanotime()
diff_time <- current_time - start_time
if (diff_time > val_ns) break
}
}
system.time(sys_sleep(1, "s"))
#> user system elapsed
#> 1.015 0.014 1.030
system.time(sys_sleep(100, "ms"))
#> user system elapsed
#> 0.995 0.002 1.000
system.time(sys_sleep(10**6, "us"))
#> user system elapsed
#> 0.994 0.004 1.000
system.time(sys_sleep(10**9, "ns"))
#> user system elapsed
#> 0.992 0.006 1.000
system.time(sys_sleep(4.5))
#> user system elapsed
#> 4.490 0.008 4.500
repref v2.0.2를 사용하여 2022-11-21에 생성됨
언급URL : https://stackoverflow.com/questions/1174799/how-to-make-execution-pause-sleep-wait-for-x-seconds-in-r
반응형
'source' 카테고리의 다른 글
파이썬 멀티스레드는 모든 스레드가 완료될 때까지 기다립니다. (0) | 2023.07.15 |
---|---|
com.google.android.gms.common.api에 로그인하지 못했습니다.API 예외: 10: (0) | 2023.07.15 |
Spring camel 케이스 속성을 대문자 환경 변수로 설정하는 방법은 무엇입니까? (0) | 2023.07.15 |
스프링 부트 Junit 테스트 케이스에서 contextLoads 메서드는 어떤 용도로 사용됩니까? (0) | 2023.07.15 |
postgres 사용자와 비밀번호를 어떻게 확인합니까? (0) | 2023.07.15 |