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



4 Answers

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

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

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




時間遅延を入れるには、 timeモジュールをインポートする必要があります。 そのモジュールでは、次のように書くだけです。

time.sleep(The amount of time)

たとえば、コンピュータが別の行を実行する前に1秒間の時間遅延を設定する場合は、次のように入力する必要があります。

time.sleep(1)
print('Hello World!')

それで全部です :)




あなたはこれを単に行うことによってそれを得ることができます:

from time import sleep

# doing stuff
sleep(0.5) # sleeping half a second (sleep() uses seconds, but you can also use floats)
# doing stuff..



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

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

from time import sleep
sleep(1)

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

from time import sleep

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

sleep(seconds)

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

time.sleep()

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

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

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

それと同じようにそれを行うことができます:

import time
time.sleep(1)

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




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回押すことができたことです(最初の空のプロンプトを参照)。

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




Related