파이썬

[python] 시간 지연은 어떻게 합니까? [복제하다]

zooheon 2022. 8. 22. 23:01
반응형

Python 스크립트에 시간 지연을 어떻게 넣습니까?

 

2.5초 동안 지연됩니다.

import time
time.sleep(2.5)

다음은 약 1분에 한 번 실행되는 또 다른 예입니다.

import time
while True:
    print("This prints once a minute.")
    time.sleep(60) # Delay for 1 minute (60 seconds).

 

모듈 sleep()에서 사용 합니다. time1초 미만의 해상도를 위해 float 인수를 사용할 수 있습니다.

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

 

파이썬에서 어떻게 시간 지연을 만들 수 있습니까?

단일 스레드에서 절전 기능 을 제안합니다 .

>>> from time import sleep

>>> sleep(4)

이 함수는 실제로 운영 체제에 의해 호출된 스레드의 처리를 일시 중단하여 다른 스레드와 프로세스가 잠자는 동안 실행할 수 있도록 합니다.

그 목적으로 사용하거나 단순히 기능 실행을 지연시키는 데 사용합니다. 예를 들어:

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

"만세!" 을 누른 후 3초 후에 가 인쇄 Enter됩니다.

sleep다중 스레드 및 프로세스와 함께 사용하는 예

다시 말하지만, sleep스레드를 일시 중단합니다. 이는 거의 0에 가까운 처리 능력을 사용합니다.

시연하기 위해 다음과 같은 스크립트를 생성합니다(처음에는 대화형 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것입니다(첫 번째 빈 프롬프트 참조).

멀티프로세싱 라이브러리 에는 해당 개체가 없습니다 . 만들 수는 있지만 아마도 이유가 없을 것입니다. 하위 스레드는 완전히 새로운 하위 프로세스보다 간단한 타이머에 훨씬 더 적합합니다.

 

반응형