python - time.clock() 和 App Engine 日志时间之间的时间非常不同
问题描述
我尝试解决我的 App Engine flex 应用程序中的延迟问题,我怀疑我的服务器响应时间太长(Chrome 给出的 TTFB 超过 20 秒)。
所以我使用time.clock()
(Python2.7)来查看时间都花在了哪里。我还使用print
将这些值导入 Stackdriver。
而且不同的时间根本不一致。
这是在离开之前。
我计算的经过时间不过是结束时间 - 开始时间(每个调用time.clock()
一次)。
你可以看到它不到一秒。堆栈驱动程序日志显示花费了将近 4 秒。
知道为什么会有这种差异吗?time.clock()
在 App engine flex 上没有按预期工作?
谢谢
解决方案
time.clock()
为您提供进程的 CPU 时间量,这就是这些值不一致的原因。
我做了这个测试:
@app.route('/')
def hello():
"""Return a friendly HTTP greeting."""
tc0 = time.clock()
print(tc0)
tt0 = time.time()
print(tt0)
x= datetime.datetime.now()
print(x)
time.sleep(10)
tc1 = time.clock()
print(tc1)
tt1 = time.time()
print(tt1)
y = datetime.datetime.now()
print(y)
return 'Hello World!'
这是结果:
tc0 0.144582
tt0 1552994288.7333689
x 2019-03-19 11:18:08.733498
tc1 0.144829
tt1 1552994298.7438576
y 2019-03-19 11:18:18.743877
如您所见,您想要使用的是time.time()
或datetime.datetime.now()
获取在给定代码部分中花费的实际时间,因为time.clock()
它为您提供了 CPU 时间量。
推荐阅读
- google-chrome - html5视频在谷歌浏览器上首次加载时无法搜索视频,但刷新页面几次后,它可以搜索
- java - 按值分组并分离输出
- php - 使用 JOIN 更新 MySQL 中的两个表
- c++ - 无法理解声明中的 const 结构
- android - 通过杰克逊解析具有多个元素的xml文件
- servicestack - 当我使用 ServiceStack.OrmLite.SqlServer Db.Select
有时 Result 是 TableB 的行或 TableA 的其他行 - html - Bootstrap 4 - 部分下一张幻灯片上的光滑滑块渐变效果
- java - 将 JSON 转换为对象抛出 JsonMappingException “无法反序列化类实例出 START_ARRAY 令牌”
- docker - ForgeRock 产品(即 AM、IDM、DS 和 IG)在 Docker 容器中使用的最佳操作系统是哪个?
- css - 我在 hompage 上的字体工作正常,但在其他页面上却没有