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()
에서 사용 합니다. time
1초 미만의 해상도를 위해 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것입니다(첫 번째 빈 프롬프트 참조).
멀티프로세싱 라이브러리 에는 해당 개체가 없습니다 . 만들 수는 있지만 아마도 이유가 없을 것입니다. 하위 스레드는 완전히 새로운 하위 프로세스보다 간단한 타이머에 훨씬 더 적합합니다.
'파이썬' 카테고리의 다른 글
[python] 함수 데코레이터를 만들고 함께 연결하려면 어떻게 해야 합니까? (0) | 2022.08.22 |
---|---|
[python] **(이중 별표/별표) 및 *(별표/별표)는 매개변수에 대해 무엇을 합니까? (0) | 2022.08.22 |
[python] 열 값을 기반으로 DataFrame에서 행을 어떻게 선택합니까? (0) | 2022.08.22 |
[python] 할당 후 예기치 않게 변경되지 않도록 목록을 복제하려면 어떻게 해야 합니까? (0) | 2022.08.22 |
[python] Python의 목록 메서드 추가와 확장의 차이점은 무엇입니까? (0) | 2022.08.22 |