Làm cách nào để chương trình Python của tôi ngủ trong 50 mili giây?


536

Làm cách nào để chương trình Python của tôi ngủ trong 50 mili giây?

Câu trả lời:


822
from time import sleep
sleep(0.05)

Tài liệu tham khảo


7
@CsabaToth miễn là bạn có một triển khai Python tùy thuộc vào hệ điều hành của bạn, ở trên là độc lập với hệ điều hành.
Chris

83

Lưu ý rằng nếu bạn dựa vào giấc ngủ mất chính xác 50 ms, bạn sẽ không nhận được điều đó. Nó sẽ chỉ là về nó.


35
Nó có thể dài hơn 10 hoặc 15ms so với trên một số nền tảng, vì vậy hãy cảnh báo.
Kylotan

3
Nó có phải là một độ trễ nhất quán trên một hệ thống nhất định không?
dùng391339

7
@ user391339 Từ kinh nghiệm nó không nhất quán. Ưu tiên luồng / tiến trình, tải CPU, bộ nhớ khả dụng và rất nhiều yếu tố khác làm cho tất cả các cuộc gọi không chính xác. Hệ thống càng bận rộn thì sự thiếu chính xác càng cao.
David

2
Có thể thú vị khi biết rằng 'hàm [ time.sleep(secs)] ngủ ít nhất secs ' kể từ Python 3.5 theo tài liệu.
Elias Stroundle

67
import time
time.sleep(50 / 1000)

13
from __future__ import divisionđể loại bỏ gotcha đó.
Nick T

1
các đơn vị tính bằng giây, không phải mili giây
Nikhil VJ

2

cũng có thể sử dụng pyautogui như

import pyautogui
pyautogui._autoPause(0.05,False)

nếu lần đầu tiên không phải là Không, thì nó sẽ tạm dừng lần thứ hai, trong ví dụ này: 0,05 giây

nếu đầu tiên là Không và đối số thứ hai là Đúng, thì nó sẽ chuyển sang cài đặt tạm dừng toàn cục được đặt với

pyautogui.PAUSE = int

Nếu bạn đang tự hỏi lý do, hãy xem mã nguồn:

def _autoPause(pause, _pause):
    """If `pause` is not `None`, then sleep for `pause` seconds.
    If `_pause` is `True`, then sleep for `PAUSE` seconds (the global pause setting).

    This function is called at the end of all of PyAutoGUI's mouse and keyboard functions. Normally, `_pause`
    is set to `True` to add a short sleep so that the user can engage the failsafe. By default, this sleep
    is as long as `PAUSE` settings. However, this can be override by setting `pause`, in which case the sleep
    is as long as `pause` seconds.
    """
    if pause is not None:
        time.sleep(pause)
    elif _pause:
        assert isinstance(PAUSE, int) or isinstance(PAUSE, float)
        time.sleep(PAUSE)

1
bằng cách nào đó, tốt hơn là sử dụng time.sleepthay thế cái này, nhưng nếu bạn muốn chương trình của mình là autopygui thuần túy, thì đây có thể là một cách.
okie

2

Bạn cũng có thể làm điều đó bằng cách sử dụng Timer() chức năng.

Mã số:

from threading import Timer

def hello():
  print("Hello")

t = Timer(0.05, hello)
t.start()  # After 0.05 seconds, "Hello" will be printed
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.