В чем разница между time.perf_counter () и time.process_time ()? - PullRequest
0 голосов
/ 07 сентября 2018

Я использую ноутбук Jupyter. Я пытаюсь измерить, сколько времени займет подсчет числа Авогадро с помощью python. Я обнаружил, что модули time.perf_counter() и time.process_time() будут полезны для такого рода работы. Я попробовал их обоих, но результат был совершенно другим. Что делает такого рода разницу? Вот мои коды.

import time

a = 10 ** 5

def AvogadroCounting():
    i = 0
    while i <= a:
        i += 1

AvogadroCounting()

t_fract = time.perf_counter()  #time to count fraction of avogadro's number in Seconds


print(t_fract, 'secs')

и моя тетрадь дает 693920,393636181 сек.

import time

a = 10 ** 5

def AvogadroCounting():
    i = 0
    while i <= a:
        i += 1

AvogadroCounting()

t_fract =  time.process_time()  #time to count fraction of avogadro's number in Seconds


print(t_fract, 'secs')

и это дает 2048,768273 с.

1 Ответ

0 голосов
/ 07 сентября 2018

Наиболее примечательно, что time.process_time () не продолжает работать во время сна, а time.perf_counter () -.

Официальное объяснение из них:

time.perf_counter () → float Возвращает значение (в долях секунды) счетчика производительности, то есть часов с наибольшим доступным разрешением для измерения короткой длительности. Он включает время, прошедшее во время сна, и является общесистемным. Контрольная точка возвращаемого значения не определена, поэтому допустима только разница между результатами последовательных вызовов.

time.process_time () → float Возвращает значение (в долях секунды) суммы системного и пользовательского процессорного времени текущего процесса. Не включает время, прошедшее во время сна. Это процесс по определению. Контрольная точка возвращаемого значения не определена, поэтому допустима только разница между результатами последовательных вызовов.

это можно прочитать на https://docs.python.org/3/library/time.html#module-time

сон здесь является ссылкой на time.sleep ()

def pc():
    start = time.perf_counter()
    time.sleep(1)
    print(time.perf_counter()-start)
def pt()
    start = time.process_time()
    time.sleep(1)
    print(time.time.process_time()-start)
pc()
0.99872320449432
pt()
0.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...