遅延評価 - Pythonでどのように時間を遅らせることができますか?




python 遅延評価 (8)

Pythonでどのように時間を遅らせることができますか?

私はスリープ関数を示唆する一つのスレッドで:

>>> from time import sleep

>>> sleep(4)

これにより、実際にオペレーティングシステムによって呼び出されるスレッドの処理が中断され、スリープ中に他のスレッドやプロセスが実行されるようになります。

その目的のために使用するか、関数の実行を遅らせるだけです。 例えば:

>>> def party_time():
...     print('hooray!')
... 
>>> sleep(3); party_time()
hooray!

「やっぱり! 私がEnterを押してから3秒後に印刷されました。

複数のスレッドとプロセスでsleepを使用する例

再び、 sleepはスレッドを一時停止します。これは、処理能力がゼロになるように使用されます。

説明するには、このようなスクリプトを作成します(私はこれを最初にインタラクティブなPython 3.5シェルで試みましたが、何らかの理由でサブプロセスがparty_later関数を見つけることができません)。

from concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutor, as_completed
from time import sleep, time

def party_later(kind='', n=''):
    sleep(3)
    return kind + n + ' party time!: ' + __name__

def main():
    with ProcessPoolExecutor() as proc_executor:
        with ThreadPoolExecutor() as thread_executor:
            start_time = time()
            proc_future1 = proc_executor.submit(party_later, kind='proc', n='1')
            proc_future2 = proc_executor.submit(party_later, kind='proc', n='2')
            thread_future1 = thread_executor.submit(party_later, kind='thread', n='1')
            thread_future2 = thread_executor.submit(party_later, kind='thread', n='2')
            for f in as_completed([
              proc_future1, proc_future2, thread_future1, thread_future2,]):
                print(f.result())
            end_time = time()
    print('total time to execute four 3-sec functions:', end_time - start_time)

if __name__ == '__main__':
    main()

このスクリプトの出力例

thread1 party time!: __main__
thread2 party time!: __main__
proc1 party time!: __mp_main__
proc2 party time!: __mp_main__
total time to execute four 3-sec functions: 3.4519670009613037

マルチスレッド

後でTimerスレッドオブジェクトを使用して別のスレッドで呼び出される関数をトリガすることができます。

>>> from threading import Timer
>>> t = Timer(3, party_time, args=None, kwargs=None)
>>> t.start()
>>>
>>> hooray!

>>> 

空白行は、私の標準に印刷された関数を示しています。私はプロンプトを確認するためにEnterを押してください。

この方法の利点は、 Timerスレッドが待機している間に、関数が実行される前にEnterキーを 1回押すことができたことです(最初の空のプロンプトを参照)。

マルチプロセッシングライブラリにはそれぞれのオブジェクトがありません。 作成することはできますが、理由のために存在しない可能性があります。 サブスレッドは、全く新しいサブプロセスよりも単純なタイマーにはもっと意味があります。

私はPythonスクリプトで時間を遅らせる方法を知りたいです。


3つの方法を使用して遅延を実装できます。

一番簡単なものから始めましょう:

import time
time.sleep(5) # Delay for 5 seconds.

遅延させる2番目の方法は、暗黙的なwaitメソッドを使用することです。

 driver.implicitly_wait(5)

3番目の方法は、特定のアクションが完了するまで、または要素が見つかるまで待つ必要がある場合に、より便利です。

self.wait.until(EC.presence_of_element_located((By.ID, 'UserName'))

Python標準ライブラリのtkinterライブラリは、インポートできるインタラクティブなツールです。 基本的に、ボタンやボックス、ポップアップなどを作成して、コードで操作するウィンドウとして表示することができます。

TIME.SLEEP()を使用している場合は、 TIME.SLEEP()使用しないでください。これは、プログラムがTIME.SLEEP()ないためです。 これは私に起こった。 代わりに、 root.after()を使用して、数秒間、値をミリ秒で置き換えます。 たとえば、 time.sleep(1)root.after(1000)に相当します。

そうでなければ、多くの答えが指摘しているtime.sleep()があります。


timeモジュールでは、 sleep()関数を使用できます。 サブ秒の解像度のためにfloat引数を取ることができます。

from time import sleep
sleep(0.1) # Time in seconds.

これは時間遅延の簡単な例です:

import time

def delay(period='5'):
    # If the user enters nothing, It'll wait 5 seconds
    try:
        #If the user not enters a int, I'll just return ''
        time.sleep(period)
    except:
        return ''

Tkinterの別のもの:

import tkinter

def tick():
    pass

root=Tk()
delay=100 # time in milliseconds
root.after(delay,tick)
root.mainloop()

他の誰もが事実上のtimeモジュールを提案しているが、私はmatplotlibpyplot関数を使って別の方法を共有すると思った。

from matplotlib import pyplot as plt
plt.pause(5)    # Pauses the program for 5 seconds

通常、プロットがプロットされるとすぐにプロットが消えるのを防ぐため、または粗いアニメーションを作成するために使用されます。

これにより、既にmatplotlibインポートしている場合は、 importが保存されます。


詳細については、 https://web.archive.org/web/20090207081238/http://faqts.com/knowledge_base/view.phtml/aid/2609/fid/378ください。

時間モジュールでスリープ機能を試してください。

import time
time.sleep(60)

そしてこれをwhileループに入れて、文は分だけ実行されます...これにより、コマンドの所要時間に関係なく、あらかじめ定義された間隔で文を実行することができます(1分または5分または60分または何に設定しても問題ありません)たとえば、1分ごとにpingを実行したいとします。 私がtime.sleep(60)time.sleep(45)も、pingは常に同じ時間を取るわけではありません。 コードは次のとおりです:)

time.sleep(time.localtime(time.time())[5])

[5]は、 time.localtime()の戻り値から数秒間だけtime.localtime()ます。

time.sleepの大きな点は、浮動小数点数をサポートしていることです!

import time
time.sleep(0.1) 

http://python.org/doc/current/lib/module-time.html


遅延はタイムライブラリ 、特にtime.sleep()関数をtime.sleep()ます...

それをちょっと待つようにするには:

from time import sleep
sleep(1)

これは、以下のことによって機能します。

from time import sleep

タイムライブラリからの time.sleep()を抽出します 。つまり、次のように呼び出すことができます。

sleep(seconds)

入力する必要はありません

time.sleep()

それは入力するのが厄介です。

この方法では、 タイムライブラリの他の機能にアクセスすることができず、sleepと呼ばれる変数を持つことはできません。 しかし、あなたは時間という変数を作成することができます。

from [library] import [function] (, [function2])は、モジュールの特定の部分だけを必要とする場合に最適です。

あなたは同じようにそれを行うことができます

import time
time.sleep(1)

time.clock()ような時間ライブラリの他の機能にアクセスすることができますtime.[function]()ただし、 time.[function]()を入力するだけで、可変時間を作成することはできません。





timedelay