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




파이썬 for 문 시간 (8)

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


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

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

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


3 가지 방법을 사용하여 지연을 구현할 수 있습니다.

가장 쉬운 방법부터 시작해 보겠습니다.

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

두 번째 지연 방법은 암시 적 대기 메서드를 사용하는 것입니다.

 driver.implicitly_wait(5)

세 번째 방법은 특정 작업이 완료 될 때까지 또는 요소가 발견 될 때까지 기다려야 할 때 더욱 유용합니다.

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

Python에서 시간을 지연시키는 가장 좋은 방법은 time 라이브러리를 사용하는 time 입니다. 이렇게 :

import time
time.sleep(10)

지연시킬 시간 (초)을 10으로 바꾸십시오. '10 .1 ','5.07 '등과 같은 형식을 사용할 수 있습니다.

Tkinter와 함께 사용하는 것은 권장하지 않습니다.


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()

자세한 내용을 https://web.archive.org/web/20090207081238/http://faqts.com/knowledge_base/view.phtml/aid/2609/fid/378 읽어보십시오.

시간 모듈에서 절전 기능을 시도하십시오.

import time
time.sleep(60)

그리고 이것을 while 루프에 넣으면 명령문은 분만 실행됩니다 ... 명령을 내리는 데 걸리는 시간과 관계없이 미리 정의 된 간격으로 명령문을 실행할 수 있습니다 (분 또는 5 또는 60 분이 걸리지 않는 한). 또는 무엇을 설정했는지) 예를 들어, 1 분 간격으로 ping을 실행하고 싶습니다. 나는 단지 time.sleep(60) 이나 time.sleep(45) 사용해도 ping이 항상 같은 시간을 사용하지는 않습니다. 여기에 코드가 있습니다 :)

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

[5]time.localtime() 의 반환 값에서 초를 가져옵니다.

time.sleep 에 대한 좋은 점은 부동 소수점 숫자를 지원한다는 것입니다!

import time
time.sleep(0.1) 

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


지연은 시간 라이브러리 , 특히 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]() 을 입력하지만 변수 시간을 만들 수 없습니다.


필자가 알고있는 4 가지 메소드 time.sleep() , pygame.time.wait() , matplotlib의 pyplot.pause()pyplot.pause() .after() 있습니다.

time.sleep() 예제 (Tkinter를 사용하는 경우에는 사용하지 마십시오) :

import time
print('Hello')
time.sleep(5) #number of seconds
print('Bye')

pygame.time.wait() 예제 (파이 게임 창을 사용하지 않는 경우에는 권장하지 않지만 즉시 창을 종료 할 수 있음) :

import pygame
#If you are going to use the time module
#don't do "from pygame import *"
pygame.init()
print('Hello')
pygame.time.wait(5000)#milliseconds
print('Bye')

matplotlib의 함수 pyplot.pause() 예제 (그래프를 사용하지 않는 경우에는 권장하지 않지만 그래프를 즉시 종료 할 수 있음) :

import matplotlib
print('Hello')
matplotlib.pyplot.pause(5)#seconds 
print('Bye')

마지막으로, .after() 메소드 (Tkinter에서 최상) :

import tkinter as tk #Tkinter for python 2
root = tk.Tk()
print('Hello')
def ohhi():
 print('Oh, hi!')
root.after(5000, ohhi)#milliseconds and then a function
print('Bye')






timedelay