[python] 파이썬에서 어떻게 시간을 지연시킬 수 있습니까?


Answers

time 모듈에서 sleep () 함수를 사용할 수 있습니다. 보조 초 해상도의 경우 float 인수를 사용할 수 있습니다.

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

파이썬 스크립트에 시간 지연을 두는 법을 알고 싶습니다.




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

단일 스레드에서는 sleep 함수를 제안합니다.

>>> 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 키를 한 번 누르면 다른 작업을 수행 할 수 있다는 것입니다 (첫 번째 빈 프롬프트 표시 참조).

다중 처리 라이브러리에는 개별 객체가 없습니다. 하나를 만들 수는 있지만 이유가 있어도 존재하지 않을 수 있습니다. 하위 스레드는 완전히 새로운 하위 프로세스보다 단순한 타이머에 더 많은 의미가 있습니다.




시간 지연을 넣으려면 time 모듈을 가져와야합니다. 그리고이 모듈을 사용하면 다음과 같이 작성하면됩니다.

time.sleep(The amount of time)

예를 들어 컴퓨터가 다른 행을 실행하기 전에 1 초의 시간 지연을 넣으려면 다음을 입력해야합니다.

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

그게 다야 :)




지연은 시간 라이브러리 , 특히 time.sleep() 함수를 사용하여 수행됩니다.

잠깐 기다리십시오.

from time import sleep
sleep(1)

이 작업은 다음을 수행하여 작동합니다.

from time import sleep

당신은 당신이 그것을 호출 할 수 있다는 것을 의미하는 시간 라이브러리 에서만 time.sleep() 를 추출합니다 :

sleep(seconds)

밖으로 타이핑하는 것보다 :

time.sleep()

어색하게 오래 입력해야합니다.

이 방법을 사용하면 시간 라이브러리 의 다른 기능에 액세스 할 수 없으므로 sleep이라는 변수를 사용할 수 없습니다. 하지만 시간이라는 변수를 만들 수 있습니다.

[library] import [function] (, [function2]) 를 사용하면 모듈의 특정 부분 만 있으면 편리합니다.

다음과 같이 똑같이 할 수 있습니다.

import time
time.sleep(1)

시간 을 입력하는 한 time.clock() 과 같은 시간 라이브러리 의 다른 기능에 액세스 할 수 있습니다 . 함수를 사용할 수는 있지만 변수 시간은 만들 수 없습니다.




다음과 같이하면됩니다.

from time import sleep

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



Links