Pythonプログラムを50ミリ秒間スリープさせるにはどうすればよいですか?


536

Pythonプログラムを50ミリ秒間スリープさせるにはどうすればよいですか?

回答:



83

ちょうど 50ミリ秒かかる睡眠に依存している場合、それは得られないこと注意してください。それだけです。


35
一部のプラットフォームでは10ミリ秒または15ミリ秒長くなる可能性があるため、警告が表示されます。
カイロタン2009年

3
特定のシステムで一貫した遅延ですか?
user391339

7
@ user391339経験から、それは一貫していません。スレッド/プロセスの優先順位、CPU負荷の平均、使用可能なメモリ、その他の多くの要因により、すべての呼び出しが不正確になります。システムが忙しいほど、不正確さが高くなります。
デビッド

2
ドキュメントによると、Python 3.5以降の「関数[ time.sleep(secs)] は少なくとも スリープている」というのは興味深いかもしれませんsecs
エリアスストレーレ


2

としてpyautoguiを使用することもできます

import pyautogui
pyautogui._autoPause(0.05,False)

firstがNoneでない場合、最初のarg秒待機します。この例では、0.05秒です。

最初がNoneで、2番目の引数がTrueの場合、次のように設定されたグローバル一時停止設定のためにスリープします

pyautogui.PAUSE = int

理由がわからない場合は、ソースコードを参照してください。

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
どういうわけか、これよりも使用する方が良いtime.sleepですが、プログラムを純粋なautopyguiにしたい場合は、これが1つの方法です。
okie

2

Timer()関数を使用して行うこともできます。

コード:

from threading import Timer

def hello():
  print("Hello")

t = Timer(0.05, hello)
t.start()  # After 0.05 seconds, "Hello" will be printed
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.