본문 바로가기
초보자를 위한 Python/5. Python 함수

5.16 파이썬 타이머(Timer) 함수 : 경과시간 측정하기 예제

by 엔터티 2022. 11. 7.
반응형

파이썬은 다양한 방법으로 시간 정보를 이해하고 읽는 데 도움이 되는 라이브러리를 제공합니다. 파이썬에서 이 라이브러리를 시간 모듈이라고 하며 이 모듈은 시간과 관련된 모든 작업을 수행하기 위한 시간 및 날짜 개체를 제공합니다.

이러한 작업은 타임스탬프나 문자열을 조작하지 않습니다. 대신, 그들은 객체를 조작합니다.

또한 파이썬의 시간 모듈은 프로그래머가 파이썬에서 시간 관리 관련 작업을 프로그래밍하는 데 도움이 되는 여러 기능을 제공합니다. time 모듈은 기존 파이썬 코드에 배포하거나 사용하여 파이썬 코드의 성능을 기록할 수 있으며, 이를 통해 프로그래머는 코드의 성능을 분석할 수 있습니다.

목차

    파이썬 시간 구조(time structure)를 사용하는 방법?

    파이썬의 시간 구조는 time.struct_time 객체로 표현됩니다. 파이썬시간 구조의 구문은 다음과 같이 표시됩니다.

    구문:

    Time.struct_time(tm_year=2020, tm_mon=4,tm_mday=22,tm_hour=20,tm_min=20,tm_sec=24,tm_wday=4,tm_yday=200,tm_isdst=1)

    다음은 아래 나열된 time.struct_time의 구조 또는 순서입니다.

    Index Attribute Values
    0 tm_year 0000, 2020, …,9999
    1 tm_mon 1,2, 3,…12
    2 tm_mday 1,2,3,4, 5,….31
    3 tm_hour 0,1,2,3, 4,…23
    4 tm_min 0,1,2,3….,59
    5 tm_sec 0,1,2,3…,61
    6 tm_wday 0,1,2,3,4,5,6
    7 tm_yday 1,2,3,4,…366
    8 tm_isdist -1,0,1

    인수 tm_wday에서 월요일은 0으로 표시됩니다.

    time.struct_time 값 객체는 속성과 인덱스를 모두 사용하여 나타낼 수 있습니다.

    time.asctime 함수는 시간 변환을 돕습니다. struct_time을 사람의 문자열 형식으로 읽을 수 있는 형식으로 변환합니다.

     

    파이썬에서 time epoch를 사용하는방법

    파이썬에서 Epoch는 특정 시대의 시작으로 선택된 시간 인스턴스로 정의됩니다. 파이썬 epoch에 대한 정보를 얻으려면 시간에 대한 인수로 0을 전달해야 합니다. 

    gmtime 함수. Epoch는 시간으로 표시되며 다음 과 같이 표시됩니다.00:00:00 UTC as of 1970, 1st January, 1970-01-01T00:00:00ZISO8601.

    다음 코드는 아래와 같이 파이썬 time epoch의 적용을 보여줍니다.

    import time
    EpochExampleEntity01=time.gmtime(0)
    print("The Python epoch is",EpochExampleEntity01)
    print("The Python epoch year is ",EpochExampleEntity01.tm_year)
    print("The Python epoch month is ",EpochExampleEntity01.tm_mon)
    print("The Python epoch day is ", EpochExampleEntity01.tm_mday)

    출력:

    The Python epoch is time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)
    The Python epoch year is  1970
    The Python epoch month is  1
    The Python epoch day is  1

    파이썬의 타이머에 time.time()을 사용하는 방법

    시간 모듈의 시간 함수는 마지막으로 정의된 에포크 이후 경과된 초 수를 반환합니다. 부동 소수점 데이터 유형의 형태로 초를 반환합니다.

    time.time() 함수의 구문은 다음과 같이 표시됩니다.

    구문: 

    time.time()

    다음 코드는 파이에서 시간 함수를 사용하는 방법 입니다.

    import time
    print("이 예제는 시간(time) 함수를 사용하여 초를 보여줍니다 : ", time.time())

    출력 :

    이 예제는 시간(time) 함수를 사용하여 초를 보여줍니다 :  1667519731.138479

    위의 예는 부동 소수점 값과 초 수를 보여줍니다. 시간 함수는 두 개의 기준점을 사용하여 경과된 벽시계 시간을 계산하는 데 사용할 수 있습니다.

    벽시계 경과 시간 프로그램은 다음과 같습니다.

    import time
    start_time_Entity01 = time.time()
    print("대기 후 경과된 시간......")
    print("시작 시간은 ", start_time_Entity01)
    time.sleep(1)
    end_time_Entity01 = time.time()
    print("종료 시간은", end_time_Entity01)
    print("이 예제 코드에서 경과된 시간: ", end_time_Entity01 - start_time_Entity01)

    출력:

    대기 후 경과된 시간......
    시작 시간은  1667519911.8817282
    종료 시간은 1667519912.8818002
    이 예제 코드에서 경과된 시간:  1.0000720024108887

    time.ctime()을 사용하는 방법

    Python 시간 모듈의 ctime 함수는 인수를 초로 사용하며, 이는 epoch로 전달되고 출력으로 문자열 데이터 유형의 현지 시간을 제공합니다.

    마지막 epoch 이후 경과된 초는 ctime 함수에 대한 입력이 됩니다.

    시간 함수는 ctime 함수에서 입력 또는 인수로 사용할 수도 있습니다. 기능의 목적은 출력을 이해할 수 있는 형식 또는 사람이 이해할 수 있는 형식으로 전달하는 것입니다.

    Python 시간 모듈의 ctime() 함수 구문은 다음과 같습니다.

    time.ctime()

    다음 파이썬 코드는 모듈에서 ctime() 함수의 예를 이해하는데 도움이 될것입니다.

    import time
    start_time_Entity01 = time.time()
    print("대기 후 경과된 시간...")
    print("시작 시간은 ",start_time_Entity01)
    print("인간 형태의 시작 시간 ",time.ctime(start_time_Entity01))
    time.sleep(1)
    end_time_Entity01 = time.time()
    print(time.ctime(time.time()))
    print("종료 시간은 ",end_time_Entity01)
    print("인간 형태의 종료 시간",time.ctime(end_time_Entity01))
    print("이 예제 코드에서 경과된 시간: ",end_time_Entity01 - start_time_Entity01)

    출력:

    대기 후 경과된 시간...
    시작 시간은  1667778221.5366204
    인간 형태의 시작 시간  Mon Nov  7 08:43:41 2022
    Mon Nov  7 08:43:42 2022
    종료 시간은  1667778222.5806234
    인간 형태의 종료 시간 Mon Nov  7 08:43:42 2022
    이 예제 코드에서 경과된 시간:  1.0440030097961426

    위의 코드는 time 모듈을 가져오는 것으로 시작합니다. 변수 start_time_Entity01는 time 방식으로 초기화되며, 마찬가지로 end_time_Entity01 변수도 초기화됩니다.

    그런 다음 변수는 시간 형식을 문자열 형식으로 변환하는 ctime 형식으로 변환됩니다. 이 파이썬코드는 경과된 값에 도달하기 위해 두 개의 초기화된 변수의 차이를 계산합니다. 위의 출력은 사람이 읽을 수 있는 문자열 값을 표시합니다. 또한 부동 소수점 형식의 차이도 제공합니다.

    타이머에 time.sleep()을 사용하는 방법

    시간 모듈에서 사용할 수 있는 절전 기능은 프로그램 실행 속도를 늦추는 데 도움이 됩니다. sleep 함수에 인수로 전달되는 몇 초 동안 프로그램 실행을 중지합니다.

    또한 보다 정확한 휴면 시간을 갖거나 현재 실행 스레드에서 정지하기 위해 부동 소수점 숫자를 입력으로 받습니다.

    시간 모듈의 sleep 함수 구문은 다음과 같이 표시됩니다.

    Time.sleep(10)

    절전 기능의 적용은 여러 프로그래밍 상황으로 확장됩니다. 한 상황은 데이터베이스 커밋이 될 수 있고 다른 상황은 파일이 완료될 때까지 기다릴 수 있습니다.

    다음 코드는 아래와 같이 시간 모듈의 절전 기능을 표시합니다.

    import time
    start_time_Entity01 = time.time()
    print("대기 후 경과된 시간...")
    print("시작 시간은 ", start_time_Entity01)
    print("인간 형태의 시작 시간 ", time.ctime(start_time_Entity01))
    print("<<<메소드를 호출하기 전에>>>")
    time.sleep(1)
    time.sleep(10.5)
    print("<<<슬립 메소드 호출 후>>>")
    end_time_entity01 = time.time()
    print(time.ctime(time.time()))
    print("종료시간은", end_time_entity01)
    print("인간 형태의 종료 시간", time.ctime(end_time_entity01))
    print("이 예제 코드에서 경과된 시간 : ", end_time_entity01 - start_time_Entity01)

     

     

    출력

    대기 후 경과된 시간...
    시작 시간은  1667778568.4806962
    인간 형태의 시작 시간  Mon Nov  7 08:49:28 2022
    <<<메소드를 호출하기 전에>>>
    <<<슬립 메소드 호출 후>>>
    Mon Nov  7 08:49:39 2022
    종료시간은 1667778579.9819248
    인간 형태의 종료 시간 Mon Nov  7 08:49:39 2022
    이 예제 코드에서 경과된 시간 :  11.50122857093811

    time.gmtime()으로 파이썬에서 시간 사용방법

    Python의 time 모듈에 있는 gmtime() 함수는 epoch 완료 후 전달되는 초 단위의 인수를 취합니다. 이 함수는 struct_time 또는 UTC 형식의 형식으로 출력을 반환합니다. 여기서 UTC는 협정 세계시를 의미합니다.

    gmtime() 함수의 구문은 다음과 같습니다.

    time.gmtime(argument)

    다음 코드는 아래와 같이 Python의 gmtime() 함수를 사용하는 방법에 대한 예입니다.

    import time
    result = time.gmtime(time.time())
    print("시간의 구조 형식은 다음과 같습니다.")
    print(result)
    print("구조화된 형식의 연도는 다음과 같이 표시됩니다.", result.tm_year)
    print("구조화된 형식의 시간은 다음과 같이 표시됩니다.", result.tm_hour)

    출력

    시간의 구조 형식은 다음과 같습니다.
    time.struct_time(tm_year=2022, tm_mon=11, tm_mday=6, tm_hour=23, tm_min=52, tm_sec=20, tm_wday=6, tm_yday=310, tm_isdst=0)
    구조화된 형식의 연도는 다음과 같이 표시됩니다. 2022
    구조화된 형식의 시간은 다음과 같이 표시됩니다. 23

    위의 코드에서 파이썬의 time 모듈의 시간 함수는 최종 사용자에게 구조화된 시간 형식을 출력으로 제공하는 gmtime 함수에 인수로 전달됩니다.

    time.clock() 함수를 사용하는 방법

    time 모듈에 있는 clock 함수는 처리 시간을 최종 사용자에게 출력으로 반환합니다. 

    기능의 주요 역할은 벤치마킹 및 성능 테스트를 용이하게 하는 것입니다. 이 함수는 세그먼트가 실행을 완료하는 데 걸리는 정확하거나 정확한 시간을 제공합니다. 함수에서 제공하는 출력은 다른 시간 관련 함수보다 정확한 결과입니다.

    시계 기능의 구문은 다음과 같이 표시됩니다.

    time.clock()

    clock 함수는 파이썬 3에서 더 이상 사용되지 않으므로 프로그래머는 time.perf_counter() 함수와 time.process_time() 함수를 사용하여 개발자가 개발한 코드의 성능을 평가할 수 있습니다.

     

    time.Thread_time을 사용하는 방법

    time 모듈의 thread_time 함수는 활성 실행 스레드에 대한 시스템 시간과 CPU 시간의 합계를 제공합니다. 

    이 함수는 부동 소수점 값을 반환하며 sleep 함수가 호출될 때 코드가 소비하거나 걸리는 시간은 포함하지 않습니다. 이 기능은 특정 스레드에만 활용되며, 두 기준점 사이의 시간차를 기록하는 데 사용할 수 있습니다.

    다음 예제는 스레드 시간 함수의 적용을 보여줍니다.

    import time
    import threading
    start_time1 = None
    end_time1 = None
    def threadexample1():
        global start_time1, end_time1
    start_time1 = time.thread_time()
    ExecutionLoop = 0
    while ExecutionLoop < 100000000:
        pass
        ExecutionLoop += 1
    end_time1 = time.thread_time()
    threadTarget = threading.Thread(target = threadexample1, args = ())
    threadTarget.start()
    threadTarget.join()
    print("쓰레드에서 보낸 시간은 {}입니다.".format(end_time1 - start_time1))

    출력:

    쓰레드에서 보낸 시간은 7.9375입니다.

    위의 코드는 예제 스레드로 명명된 스레드에서 소요된 시작 시간과 종료 시간의 시간 차이를 반환하고 그 차이를 각각 7.9375로 반환합니다.

    time.Process_time() 함수를 사용하는 방법

    time 모듈에 있는 프로세스 시간 함수는 소수 초 및 부동 소수점 값으로 시간 참조를 반환합니다. 

    이 함수는 시스템 시간과 CPU 시간의 현재 진행 상황의 합계를 제공합니다.

    이 함수는 time.sleep function()에서 보낸 시간을 포함하지 않는 thread_time 함수에 있는 것과 유사한 속성을 표시합니다. 또한 특정 프로세스를 기반으로 하는 참조를 생성합니다. 이 속성으로 인해 두 개의 연속 참조 간의 시간 차이가 수행됩니다.

    다음 코드는 아래와 같이 프로세스 시간 함수의 사용법을 설명합니다.

    from time import process_time, sleep
    g = 20
    start_time = process_time()
    for i in range(g):
        print(i)
    end_time = process_time()
    print("종료시간과 시작시간은 다음과 같습니다 :", end_time, start_time)
    print("초 단위 경과 시간 :", end_time - start_time)

    출력:

    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    종료시간과 시작시간은 다음과 같습니다 : 16726.703125 16726.703125
    초 단위 경과 시간 : 0.0

    위의 코드는 시작 시간과 종료 시간 사이의 시간을 기록합니다. 시작 시간과 종료 시간 차이 사이에 프로세스 코드의 실행은 프로세스로 기록되고 경과 시간의 일부가 됩니다.

    time.Perf_counter() 함수를 사용하는 방법

    Perf_counter 함수는 고정밀 또는 정확한 시간 값을 제공합니다. perf_counter 함수는 설정된 두 기준점(시작 및 종료 시간) 사이에 정확하거나 정확한 시간을 전달합니다.

    from time import perf_counter, sleep
    g = 6
    start_time = perf_counter()
    print("타이머 시작 시간 ", start_time)
    for i in range(g):
        sleep(1)
    end_time = perf_counter()
    print("타이머 종료 시간 ", end_time)
    print("성능 카운터에 기록된 경과 시간(초) : ", end_time - start_time)

    출력:

    타이머 시작 시간  36557.5109558
    타이머 종료 시간  36563.514598
    성능 카운터에 기록된 경과 시간(초) :  6.003642200004833

    위의 코드에서 간단한 루프가 적용되어 함수 성능 카운터가 시작 시간과 종료 시간 사이의 시간을 기록하는 데 걸리는 시간을 확인합니다. 출력 쇼케이스로서 타이머는 고정밀 출력을 제공합니다.

    파이썬에서 시간대를 확인하는 방법

    최종 사용자에게 시간대와 관련된 정보를 제공하는 time 모듈의 time 함수 아래에 두 가지 속성이 있습니다.

    • 첫 번째는 time.timezone 속성이고 두 번째 속성은 time.tzname입니다.
    • time.timezone은 비 DST의 오프셋 또는 UTC 형식의 현지 표준 시간대를 반환합니다.
    • time.tzname은 DST와 비DST 또는 현지 시간대를 포함하는 튜플을 반환합니다.

    time.timezone  구문

    time.timezone

    time.tzname 구문

    time.tzname

    다음 코드는 파이썬에서 시간대 속성을 사용하는 방법을 보여줍니다.

    import time
    print("non-DST 형식의 시간대는 다음과 같습니다:",time.timezone)
    print("DST 와 non-DST 형식의 시간대는 다음과 같습니다.:",time.tzname)

    출력:

    non-DST 형식의 시간대는 다음과 같습니다: -32400
    DST 와 non-DST 형식의 시간대는 다음과 같습니다.: ('대한민국 표준시', '대한민국 일광 절약 시간')

    기본 파이썬 타이머를 개발하는 방법

    파이썬 타이머는 코드의 시간 복잡도를 관리하는 데 도움이 되는 라이브러리 또는 클래스로 정의됩니다.

    타이머를 사용하면 기존 코드 조각에서 시스템을 만들고 기존 코드가 작업을 완료하는 데 걸리는 시간을 확인할 수 있습니다.

    위와 같은 성능 카운터, 프로세스 타이머, 시간 함수 사용 등의 파이썬 타이머를 사용하여 기존 코드의 성능을 실행 관점에서 평가할 수 있습니다.

     

     

     

    기타 중요한 타이머 모듈:

    파이썬은 시간 관리와 코드 분석에 도움이 되는 여러 모듈을 제공합니다. 파이썬으로 작성된 코드에 대한 시간 및 노력 분석에 사용할 수 있는 다른 모듈은 다음과 같습니다.

    • Term down: 이것은 고급 특성의 파이썬 타이머이며 다른 ASCII 문자를 사용합니다. 간단한 카운트다운 타이머를 생성하는 데 사용됩니다.
    • MobTimer: 실행될 때 여러 옵션이 있는 최종 사용자 전체 화면 타이머를 제공하는 파이썬의 또 다른 GUI 기반 타이머입니다.
    • Ctimer:   이것은 최대 나노초의 정밀도를 제공하는 파이썬의 타이머 모듈입니다. C 언어 API를 사용하여 시간을 정확하게 기록합니다.

     

     

     

    반응형

    댓글