จะหยุดการดำเนินการนอนหลับรอ X วินาทีใน R ได้อย่างไร


130

คุณหยุดสคริปต์ R ชั่วคราวตามจำนวนวินาทีหรือมิลลิวินาทีที่ระบุได้อย่างไร ในหลายภาษามีsleepฟังก์ชัน แต่?sleepอ้างถึงชุดข้อมูล และ?pauseและ?waitไม่อยู่

จุดประสงค์คือสำหรับภาพเคลื่อนไหวที่ตั้งเวลาเอง โซลูชันที่ต้องการใช้งานได้โดยไม่ต้องขอข้อมูลจากผู้ใช้


5
@Ricardo เราได้พูดคุยกันทั้งหมดเกี่ยวกับเรื่องนี้กับ Joshua และคนอื่น ๆ และในที่สุดเราก็ตกลงกันว่าทั้ง "หยุดชั่วคราว" และ "sleep" ควรอยู่ในชื่อเรื่อง ชื่อสุดท้ายเป็นผลมาจากการประนีประนอม และคุณเพียงแค่ก้าวเข้ามาและไม่มีข้อโต้แย้งใด ๆ ว่าเหตุใดชื่อของคุณจึงดีกว่าย้อนกลับไปสู่การแก้ไขครั้งก่อน? การเพิ่มคำว่า "sleep" ลงในชื่อจะช่วยให้ค้นหาคำถามได้ง่ายขึ้นมากเนื่องจาก "sleep" มีหลายภาษาและมีความเป็นไปได้สูงที่ผู้ใช้จะค้นหาคำถามนั้น ชื่อปัจจุบันมีคำบาลาสต์จำนวนมากและคีย์เวิร์ดสำคัญหายไป จุดประสงค์ของการย้อนกลับของคุณคืออะไร?
TMS

Google "r sleep" หาไม่พบพยายามแก้ไขแล้ว
TMS

คำตอบ:


145

ดู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 

1
นี่คือตัวอย่างโค้ดจากหน้านั้น ให้หยุดชั่วคราว 3.7 วินาที testit <- function (x) {p1 <- proc.time () Sys.sleep (x) proc.time () - p1 # การใช้งาน cpu ควรเล็กน้อย} testit (3.7)
Dan Goldstein

21
ยังไงก็ตาม help.search ("sleep") จะนำทางคุณไปในทางนั้น
Dirk Eddelbuettel

ทำไมคุณไม่สามารถทำได้Sys.sleep(10)?
LéoLéopold Hertz 준영

ฉันคิดว่าคุณเข้าใจผิดตัวอย่างและภาพประกอบของฉันซึ่งวัดผลได้เช่นกันและด้วยเหตุนี้จึงแสดงให้เห็นอย่างแน่นอน
Dirk Eddelbuettel

14

Sys.sleep () จะไม่ทำงานหากการใช้งาน CPU สูงมาก เช่นเดียวกับในกระบวนการที่มีลำดับความสำคัญสูงอื่น ๆ กำลังทำงานอยู่ (แบบขนาน)

รหัสนี้ใช้ได้ผลสำหรับฉัน ที่นี่ฉันกำลังพิมพ์ 1 ถึง 1,000 ในช่วง 2.5 วินาที

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
}

ฟังก์ชัน Sys.sleep () ใช้งานไม่ได้ในกรณีการใช้งานของฉันและนี่เป็นวิธีเดียวที่ฉันสามารถจัดการกับความล่าช้าที่จำเป็นได้
Pake
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.