예제

파이썬 타이머 클래스 이해 파이썬에는 코더의 요구를 충족시키기 위해 수천 개의 모듈과 라이브러리가 있습니다. 그러나,그(것)들을 유용하게 만들기 위하여,당신은 그(것)들을 첫째로 이해하고 그 후에 적용해야 한다. 특정 모듈에 대한 사전 지식이 없으면 수행하려는 작업과 모듈이 실제로 수행하는 작업이 불확실합니다. 시간은 코딩 문제의 중요한 요소 중 하나입니다. 모든 코드는 강력한 알고리즘을 사용하여 인간의 작업을 줄이기위한 것입니다. 시간 관리는 코드 성능 분석에 큰 영향을 줍니다. 그래서 오늘 우리는 파이썬에서 타이머가 어떻게 작동하는지에 대해 깊이 배울 것입니다.

파이썬 타이머는 코드의 시간 복잡성을 관리하는 클래스/라이브러리입니다. 여러 시간 모듈을 사용하여 코드에 시스템을 만들어 각 코드 스니펫이 취한 시간을 확인할 수 있습니다. 사용자의 요구에 따라 파이썬 타이머 구현의 다른 유형이있다,즉,파이썬 타이머 기능(스크립트 실행 시간을 확인하기 위해),파이썬 스레딩 타이머(완료 스레드에 의해 촬영 된 시간을 확인하기 위해),파이썬 카운트 다운 타이머(카운트 다운 타이머를 만들)및 기본 파이썬 시간 모듈(다른 활동에 도움).

이러한 모든 타이머 구현은 다르게 기능하며 최종 사용자에게 다른 사용을 제공하는 데 중점을 둡니다. 이 게시물에서는 모든 타이머 구현을 자세히 살펴 보겠습니다. 목차를 사용하여 각각의 파이썬 타이머 구현으로 이동할 수 있습니다.

카탈로그

기본 파이썬 타이머 기능

시간에 관한 파이썬에서 가장 중요한 모듈은 시간입니다. 이 모듈에는 시간을 확인하고 분석하는 모든 기본 기능이 포함되어 있습니다. 이 분석은 코드의 성능과 효율성을 이해하는 데 도움이 됩니다. 우리는 그 예제와 함께이 모듈에서 중요한 각 기능을 통해 갈 수 있습니다.

다음은 시간 모듈을 사용하는 기본 파이썬 타이머 함수입니다–

  • 시간.시간()
  • 시간.이 문제를 해결하려면 다음을 수행하십시오.프로세스_시간()
  • 시간.(453)
  • 시간.단조()

기능 시간.시간

time.time()은 에포크 이후의 시간을 초 단위로 반환합니다(부동). 일반적으로 신기원은 1 월로 설정됩니다 1, 1970, 00:00:00 (그리고 이 에포크 이후의 시간(초)이 반환됩니다. 이 기능은 초 수를 계산하는 컴퓨터 시간에 따라 다릅니다. 파이썬 실행 사이의 컴퓨터 시간을 변경하면이 기능을 사용하여 이상한 숫자를 얻을 수 있습니다.

예–

import timestart = time.time() #start timefor i in range(1000000): passend = time.time()print("Elapsed time is {}".format(end-start))

설명-

먼저 시간 모듈을 가져 오는 것으로 시작합니다. 이 모듈에는 이 섹션에서 사용할 모든 기본 시간 함수가 포함되어 있습니다. 코드의 시작 부분에서 시작 변수를 time.time()로 선언합니다. 현재 시간을 플로트로 저장합니다. 이 시작 변수를 참조점으로 사용하여 시간을 측정합니다. 다음 부분에는 사용하려는 모든 코드가 포함되어 있습니다(이 예제에서는 루프를 사용했습니다). 마찬가지로 중앙 처리 장치의 종료 시간(기본 시간)을 기록하고 종료 시작을 사용하여 총 실행 시간을 확인하십시오.

이 초 코드에 의해 촬영 된 시간을 인쇄합니다. 이 기술을 사용하면 코드에 걸린 시간을 확인할 수 있습니다. 이 방법의 유일한 문제는 코드가 실행되는 동안 프로세서 시간을 변경할 수 있다는 것입니다. 이 파이썬 타이머에 문제가 동작이 발생합니다.

기능 시간.현재 실행 중인 스레드에서 시스템 시간(플로트)의 합계를 반환합니다. 또한time.sleep()함수에서 보내는 시간은 포함되지 않습니다. 이 함수는 스레드마다 다르므로 시간 참조가 동일한 스레드에 속하는 한 이 함수를 사용하여 시간 차이를 기록할 수 있습니다.

예–

import timeimport threadingend = Nonestart = Nonedef hello(): global start, end start = time.thread_time() x = 0 while x < 10000000: pass x += 1 end = time.thread_time()t = threading.Thread(target = hello, args = ())t.start() t.join()print("The time spent is {}".format(end - start))

설명-

스레드별 시간을 반환하므로 동일한 스레드에서 참조를 사용해야 합니다. 이를 위해 함수’안녕하세요’의 스레드를 인스턴스화하고 그 안에있는 스레드가 취한 시간을 계산했습니다. 그러나 소수 값을 반환하므로 현재 시간을 가져올 수 없습니다. 그러나 동일한 스레드에 속하는 한 두 개의 연속 참조 간의 차이를 확실히 확인할 수 있습니다.

기능 시간.처리 시간

time.process_time() 은 현재 진행 중인 시스템 시간과 프로세서 시간의 합계의 소수 초(부동)단위의 시간 참조를 반환합니다. 이 함수는time.sleep()함수에서 보낸 시간을 측정하지 않습니다. 또한,이 함수는 프로세스를 기반으로 참조를 만듭니다. 이 결과로 두 개의 연속 참조 사이의 시간 차이 만 의미가 있습니다.

예–

from time import process_time, sleepiterations = 100000start = process_time() for i in range(iterations): print(i, end=" ") # Stop the stopwatch / counter end = process_time()print(end, start)print("Elapsed time in seconds:", end-start)

설명-

우리는 프로세스 시간 함수를 가져 오는 것으로 시작하고 코드 사이의 시작 및 종료 시간을 기록합니다. 레거시time.time()time.proces_time()의 유일한 차이점은 처리 시간이 현재 프로세스의 시간 참조를 기록하는 반면time()는 시스템의 절대 시간을 기록한다는 것입니다.

기능 시간.성능 카운터는 성능 카운터를 의미합니다. 이 함수는 짧은 시간 동안 유효한 시간의 고해상도 값을 반환합니다. 이 함수는 두 참조 사이의 정확한 시간 수를 얻는 데 사용됩니다. 다른 파이썬 타이머 함수에는 수면 시간이 포함되어 있지 않으므로perf_counter도 포함되어 있지 않습니다. 예제-

예제로 이동해 보겠습니다–

from time import perf_counter, sleep # integer input from user, 2 input in single linen = 3 # Start the stopwatch / counter start = perf_counter() for i in range(n): sleep(1)end = perf_counter() print("Elapsed time in seconds:", end-start) 

설명-

프로세스 타이머 또는 스레드 타이머와 같은 방식으로 성능 카운터를 사용할 수 있습니다. 유일한 차이점은 성능 카운터가 경과 한 시간의 높은 정확한 값을 반환한다는 것입니다. 하지만 높은 정밀도를 사용 하 여 작은 프로세스 사이 이것을 사용 해야 합니다. 우리는 그것에 의해 촬영 시간을 확인하기 위해 간단한 루프를 사용했습니다.

기능 시간.단조

단조 로움은 뒤로 갈 수없는 파이썬 타이머입니다. 파이썬 스크립트를 실행할 때,시간은 사용자에 의해 변경 될 수 있으며,파이썬에서 타이머의 구현에 큰 차이를 만들 수 있습니다. 그러나 단조 타이머는 시간 참조가 외부 변경 사항에 맞게 조정되도록합니다.

예–

from time import monotonic, sleep # integer input from user, 2 input in single linen = 3 # Start the stopwatch / counter start = monotonic() for i in range(n): sleep(1)end = monotonic() print("Elapsed time in seconds:", end-start) 

설명-

먼저 시간 모듈에서 단조 함수를 가져옵니다. 그런 다음 코드의 위쪽과 아래쪽에 시작 및 끝이라는 두 개의 참조를 만듭니다. 이 두 참조 사이의 시간을 측정하고 시스템 시간에 대한 모든 외부 변경을 방지 할 수 있습니다.

사용자 정의 파이썬 타이머 클래스

당신은 당신의 필요에 따라 일을 자신 만의 타이머 클래스를 만들 수 있습니다. 사용자 지정 클래스를 만들 때의 주요 이점 중 하나는 모든 시간을 한 줄로 관리할 수 있다는 것입니다. 당신은 시간 클래스마다 가져 참조를 기록 할 필요가 없습니다. 또한,당신은 당신의 데이터를 덤프하고 당신을위한 최고의 알고리즘을 선택하는 모든 과거의 시간 실행을 기록 할 수 있습니다.

이 섹션에서는 사용자 지정 클래스를 만들어 시간을 관리하고 코드의 모든 시간 차이를 기록합니다. 의 그것으로 바로 뛰어 보자–

시간제 노동자.피–

우리는 시간 모듈을 가져 오기로 시작합니다. 그런 다음 파이썬 타이머 클래스를 초기화하고 속성 및 메소드 정의를 시작하십시오. 지금까지,우리는 클래스의 시작 참조를 유지하기 위해 기본 특성을 포함 시켰습니다. 더 복잡하게하기 위해 여러 속성을 만들 수 있습니다. 지금까지 아래에 나열된 세 가지 방법이 있습니다–

  1. 시작-(선택 사항)타이머를 시작합니다.
  2. 로그-시작 시간과 관련된 현재 경과 시간을 기록합니다.
  3. 마일스톤-타이머를 재설정하고 0 에서 카운트를 시작합니다.
import timeclass Timer: def __init__(self): self.start = time.time() def start(self): self.start = time.time() def log(self): logger = time.time() - self.start print('Time log -',logger) def milestone(self): self.start = time.time()

example.py –

위 클래스의 사용 예는 다음과 같습니다. 보시다시피 사용자 지정 타이머 클래스를 만들어 코드를 깨끗하게 유지하고 유연성을 높일 수 있습니다.

import timertime = timer.Timer()for i in range(1000000):passp = 1time.log()for i in range(1000000):passp = 1time.log()

산출–

Time log - 0.054854631423950195Time log - 0.10871052742004395

스레딩을 사용하여 파이썬 타이머

우리는 어떤 작업을 수행 할 또는 우리의 기능은 일정 시간 후에 실행하고자 할 때,우리는 파이썬 타이머 클래스를 사용합니다. 타이머 클래스는 스레딩 클래스의 하위 클래스입니다. 기술적으로,당신은 우리가 작업을 할 때 우리는 타이머 개체를 만들 것을 말할 수있다(기능)시간에 의해 제한.

예를 들어,참가자가 10 초 안에 각 질문에 대답해야하는 퀴즈를 구성한다고 가정합니다. 여기에서,우리는 백그라운드에서 실행되는 타이머를 만들 수 있습니다,한편,참가자는 대답에 대해 생각 될 것입니다. 이제 타이머 개체를 만드는 방법을 이해하겠습니다.

파이썬에서 타이머 클래스의 구문

당신은 타이머 클래스가 무엇을 이해하지 않은 경우,당신은이 방법으로 생각할 수 있습니다–타이머 클래스는 지정된 시간(초)후 함수를 호출합니다.

타이머를 시작하려면,우리는()취소 호출 할 수 있습니다(그냥 일반 스레드 등)시작을 호출하고,이 배경에있는 동안 타이머를 중지해야합니다.

타이머 클래스를 사용하려면 스레딩 클래스

스레딩을 가져와야합니다.매개 변수-

간격-다음 함수를 호출하기 전에 대기할 시간(초)입니다. 플로트 또는 정수 일 수 있습니다. 예를 들어 3 초 동안 간격=3 입니다.

함수-지정된 시간 간격 후에 호출할 함수입니다.

*인수 및**콰그 매개 변수를 설명하는 일반적인 방법은 간격 초가 경과 한 후 인수’인수’와 키워드 인수’콰그’로 함수를 실행하는 타이머 개체를 만드는 것입니다. 인수는 사전의 모양으로 명부 및 0 개의 키워드 인수 또는 콰르의 모양으로 이어야 한다.

반환 유형-

매개 변수에 지정된 함수 만 호출합니다.

타이머 클래스의 메소드

  1. 시작()–타이머 실행의 시작을 의미합니다.
  2. 취소()-타이머 실행 중에 중지하려면 취소를 호출 할 수 있습니다().

타이머 객체 만들기

에이. 기본 사항 이해

타이머 객체의 작동을 이해하려면 클래스의 기본 사항을 이해하는 데 도움이되는 작은 프로그램을 만들어 보겠습니다.

# Importing the Timer subclass from the threading Classfrom threading import Timer# creating a basic function that will print "hello"def hello(): print ("hello, world")# creating the object of the Timer subclass# Here, 5 sec means that the execution of the function="hello" after 5 secondst = Timer(interval=5.0, function=hello)# starting the executiont.start() # after 30 seconds, "hello, world" will be printed
Output-hello, world
파이썬 타이머

자신의 시스템에서 실행하려고 할 때 위의 프로그램의 기능을 더 잘 이해할 수 있습니다.

비.취소 방법 사용

타이머 클래스의 취소()기능을 사용하는 방법을 살펴 보겠습니다.

# Importing the Timer subclass from the threading Classfrom threading import Timer# creating a basic function that will print "hello"def hello(): print ("hello world") # creating the object of the Timer subclass# Here, 5 sec means that the execution of the function="hello" after 5 secondst = Timer(interval=5.0, function=hello) # starting the executiont.start() # after 30 seconds, "hello, world" will be printedprint("Execution begins")# cancelling the execution of the 'hello' functiont.cancel()print("END")
Execution begins END

기음. 파이썬 타이머 클래스의’인수’매개 변수를 사용하는 방법

우리가 호출 할 필요가 함수에 인수를 제공 할 필요가있을 때,우리는 인수 매개 변수를 사용합니다. 우리는 배열의 인수 인수를 제공해야합니다.

import threading# To take multiple inputs we can use *before the parameter.def print_name(*names): # From the array of names pick one name and print it for name in names: print("Hello",name)# In the args parameter, give an array of names t = threading.Timer(3, print_name,)# start the executiont.start()print("Execution begins...")

Execution begins...Hello AshwiniHello VandyHello Arijit

이제 우리는 보너스로,시간에 대해 많이 이야기 한 것을,우리가 카운트 다운 타이머 역할을 할 프로그램을 만들어 보자.

파이썬의 카운트 다운 타이머

시간 모듈 사용

# We will use the time moduleimport time# Create a function that will print the timedef create_countdown_timer(time): print(time,"......")time_in_sec=int(input("Please entert the time in seconds:"))for times in range(time_in_sec): # call the function and pass the current time left create_countdown_timer(time_in_sec-times) # call the function in every 1 second. time.sleep(1) print("Time is up")
Please entert the time in seconds:77 ......6 ......5 ......4 ......3 ......2 ......1 ......Time is up

파이썬 타이머 클래스 사용

# We will use the time moduleimport timefrom threading import Timer# Create a function that will print the timedef create_countdown_timer(time): print(time,"......")# Here you have to enter the time for which the timer will runtime_in_sec=int(input("Please enter the time in seconds:"))# For the first time we will call the function manuallycreate_countdown_timer(time_in_sec) for times in range(1,time_in_sec): # calling the Timer class every second t = Timer(1,create_countdown_timer,) t.start() time.sleep(1) print("\n Time is up") 
Please entert the time in seconds:1010 ......9 ......8 ......7 ......6 ......5 ......4 ......3 ......2 ......1 ......Time is up

컨텍스트 관리자로서의 파이썬 타이머

컨텍스트 관리자는 메모리 오류 및 후속 충돌을 피하는 가장 좋은 방법입니다. 모두 파이썬에서”와 함께”에 대해 알고 있어야합니다. 이 문은 우리가 독립적으로 닫 많은 개체를 처리 할 필요가 없음을 보장합니다. 모든 사람이 와 열기()기능의 조합으로 그것을 사용했을 수 있습니다. 따라서 주요 질문으로 이동하여 파이썬 타이머에 대한 컨텍스트 관리자를 만들 수 있습니까?

예. 여러 오버로드 기능으로 인해,우리는 쉽게 몇 줄에 컨텍스트 관리자로 우리 자신의 파이썬 타이머를 만들 수 있습니다. 프로그램의 실행 시간을 측정해야 하는 예제부터 시작하겠습니다. 모든 변수를 재정의하지 않고 하나의 컨텍스트 관리자를 반복적으로 사용하여 시간을 여러 번 측정 할 수 있습니다. 다음 프로그램이 그것을 보여줍니다.

예–

import timeclass Timer_Pythonpool(): """ Context manager as a python timer """ def __init__(self): self.start = None def __enter__(self): """ Notes the time at the start of the iteration """ self.start = time.time() return self def __exit__(self, exc_type, exc_value, exc_traceback): """ Prints the time taken at the end of the iteration """ print("Time to finish the task: ", time.time()-self.start) with Timer_Pythonpool() as timer: for i in range(1000000): x = 0 pass

산출–

Time to finish the task: 0.05392050743103027

설명-

우리는”타이머라는 클래스를 만드는 것으로 시작합니다.”그런 다음 운영자를 사용자 정의하여 컨텍스트 관리자로서 유용하게 만듭니다. __입력__함수는 컨텍스트의 시작 부분에서 실행되고__종료__는 컨텍스트의 끝에서 실행됩니다. 이 두 함수 사이에 참조 점을 만들면 컨텍스트가 실행하는 데 걸리는 정확한 시간을 제공 할 수 있습니다.

파이썬 타이머 데코레이터

데코레이터는 모든 종류의 기능에 대한 추가 지원입니다. 또한 메타 프로그래밍으로 불리며 기능을 수정/추가 할 수 있습니다. 파이썬 타이머 데코레이터는 파이썬에서 타이머 기능을 구현하는 가장 쉬운 방법입니다. 일단 선언,당신도 그들을 모른 채 한 줄에 장식을 사용할 수 있습니다. 이 코드를 추가하면 코드의 모든 함수에 적용하여 실행하는 데 가장 많은 시간이 걸리는 코드를 확인할 수 있습니다.

구문–

체인 데코레이터를 만들려면 여러 중첩 함수를 선언해야 합니다. 다른 함수를 기본 데코레이터 이름으로 지정하고 임의의 이름으로 내부 이름을 지정하십시오. 내부 함수는 데코레이터 아래에 사용된 함수의 참조를 가져옵니다.

예–

import timedef check_time(func): def inner(*args, **kwargs): start = time.time() func(*args, **kwargs) end = time.time() print("Time taken to execute function is ", end-start) return inner@check_timedef task(): # do something for i in range(10000000): x = 0 passtask()

산출–

Time taken to execute function is 0.24933218955993652

설명-

평소와 같이 파이썬”시간에서 가장 중요한 모듈을 가져 오는 것으로 시작합니다.”다음으로,우리는”체크_시간이라는 데코레이터를 만듭니다.”그 안에 우리는 시간의 참조를 만들 수있는 중첩 된 내부 함수를 추가합니다. 이 두 참조는 둘 다 함수 실행 사이에 배치되도록 배치됩니다.

또한”작업”이라는 테스트 함수를 만들어 작업이 작동하는지 확인합니다. 그런 다음 그 위에 장식자를 추가하십시오. 지금 장식자는 그것의 마술을 하고 기능에 의해 걸리는 시간을 인쇄할 것이다.

파이썬 타이머 재사용 대기 시간

파이썬 타이머 재사용 대기 시간은 타이머를 뒤로 측정하는 방법입니다. 사용자 지정 타이머 클래스를 만들면 코드의 모든 지점에서 시간을 기록할 수 있습니다. 이 클래스를 모듈로 내보내고 코드에 종속성으로 설치할 수 있습니다. 그런 다음 한 줄을 사용하여 가져올 수 있습니다–

import timeclass Timer: """ Timer class """ def __init__(self): self.start = time.time() ''' Restarts the timer. ''' def restart(self): self.start = time.time() ''' Returns the time elapsed and resets the counter. ''' def get_new_time(self): value = time.time() - self.start self.restart() return value ''' Prints the time elapsed and resets the counter. ''' def print_new_time(self): print (self.get_new_time()) ''' Returns the time elapsed (Does not reset the counter). ''' def get_time(self): return time.time() - self.start self.restart() ''' Prints the time elapsed (Does not reset the counter). ''' def print_time(self): print(self.get_time()) ''' Returns the time elapsed in HH:mm:ss (Does not reset the counter). ''' def get_time_hhmmss(self): end = time.time() m, s = divmod(end - self.start, 60) h, m = divmod(m, 60) time_str = "%02d:%02d:%02d" % (h, m, s) return time_strtimer = Timer() #Initialize the timer#wash clothes for 5 secondstimer.print_time() #Print the time elapsed since Initialization (in seconds)#dry clothes for 3 secondstimer.print_new_time() #Print the time elapsed since Initialization and reset the timer#burn clothes for 10 secondsprint(str('Task done for ' + str(timer.get_time()) + ' seconds.'))

다른 파이썬 타이머 모듈

파이썬에는 수천 개의 모듈과 수백만 개의 코드 조각이 포함되어 있습니다. 우리는 항상 오픈 소스 모듈을 사용하여 파이썬 타이머를 사용할 수 있습니다. 기 허브는 이러한 모듈을 찾을 수있는 가장 큰 장소입니다. 이 모듈로 바로 뛰어 들어 봅시다–

  1. 템 다운:다른 아스키 문자를 사용하여 만든 고급 파이썬 타이머. 이 스크립트를 사용하여 터미널에 간단한 카운트 다운 타이머를 만들고 마지막에 명령을 실행할 수 있습니다. 가장 중요한 것은 음성 카운트 다운을 지원한다는 것입니다.
  2. 몹타이머.파이썬:파이썬에서 만든 구이 기반 타이머. 이 스크립트는 여러 옵션으로 전체 화면 기반 타이머를 만듭니다. 그것과 함께,당신은이 프로그램을 사용하여 동시에 화면에 여러 타이머를 실행할 수 있습니다.타이머:이것은 파이썬에서 만든 가장 기본적인 가이 기반 타이머입니다. 여러 타이머,레이블 및 멀티 스레딩과 같은 기능을 통해 다른 프로그램보다 실행 가능합니다.
  3. 코드 타이밍:이 타이머 클래스는 특정 명명 된 프로세스에 대한 모든 과거 실행 시간을 기록합니다. 레코드와 함께 특정 프로세스의 최소 시간,최대 시간,그 동안 및 중간 시간을 확인할 수 있습니다. 이 모듈은 여러 가지 방법,즉 컨텍스트 관리자 및 데코레이터로 사용할 수 있습니다.파이썬에서 나노초정밀 타이머입니다. 이 패키지에는 디버깅 심볼이 들어 있습니다. 당신은 하드 코어 정밀 시간 기록 모듈을 찾고 있다면,이 최고의 하나입니다. (참고:파이썬의 최근 업데이트에서는 시간 모듈이 나노초 단위로 시간을 기록하는 함수와 함께 추가됩니다)

읽기:

  • 에서 문자열을 소문자로 변환하는 방법
  • 제곱근을 계산하는 방법
  • 사용자 입력|입력()기능|키보드 입력
  • 파이썬을 배우는 가장 좋은 책

결론

대부분 모든 사람이 세 가지 목적으로 타이머를 사용합니다. 첫 번째는 코드 실행 시간을 기록하는 것입니다. 그리고 두 번째 것은 타이머를 사용하여 무언가에 대한 알림을 추가하는 것입니다. 다행히도이 두 가지 모두 파이썬에서 만들 수 있습니다. 다른 모듈 및 라이브러리를 사용하여,당신은 당신이 핀 포인트 정확도로 시간을 기록 할 수 있도록 할 수 있습니다.

마지막으로,타이머는 파이썬에서 스레딩 클래스의 하위 클래스입니다. 우리는 일정 시간 간격 후에 어떤 기능을 실행하려면,우리는 파이썬 타이머 클래스를 사용할 수 있습니다. 기본적으로 없음 인 인수 매개 변수에서,우리는 우리가 콜백 메소드에 제공 할 인수를 지정할 수 있습니다.

당신 측에 프로그램을 실행하고 당신이 어떤 쿼리가있는 경우 알려보십시오.

You might also like

답글 남기기

이메일 주소는 공개되지 않습니다.