我想计时一段代码。查看时间模块,其中有对“ process_time()”和“ perf_counter()”的调用。从理论上讲,由于我们需要一个过程的开始时间和结束时间的增量,因此根据文档中的描述,两者中的任何一个都应该是合适的。我尝试了其中的每一个,并得到了截然不同的结果,这不能由流程运行方式中的外部影响来解释。
因此,我让测试代码在同一运行期间从process_time()和perf_counter()收集了值,并进行了比较,但它们仍然“根本”不同。无论使用哪个函数,增量都不应该相似吗?
在对同一过程进行计时时,由于存在一些舍入误差,我希望结果是相同的。但这以10的幂关闭。
示例结果:
rpn@R59 python [master ?] 0 $ ./testTiming.py
Returned Status: 200
Request (pc) took 0.218 sec.
Request (pt) took 0.038 sec.
rpn@R59 python [master ?] 0 $
正在测试的代码:
#! /usr/bin/env python3
import time
class Timer:
def __enter__(self):
self.start_pt = time.process_time()
self.start_pc = time.perf_counter()
return self
def __exit__(self, *args):
self.end_pt = time.process_time()
self.end_pc = time.perf_counter()
self.interval = self.interval_pc = self.end_pc - self.start_pc
self.interval_pt = self.end_pt - self.start_pt
import requests
with Timer() as t:
conn =requests.get('https://www.google.com')
print("Returned Status: {}".format(conn.status_code))
print("Request (pc) took {:.03f} sec.".format(t.interval_pc))
print("Request (pt) took {:.03f} sec.".format(t.interval_pt))