首页 > 解决方案 > time.clock() 和 App Engine 日志时间之间的时间非常不同

问题描述

我尝试解决我的 App Engine flex 应用程序中的延迟问题,我怀疑我的服务器响应时间太长(Chrome 给出的 TTFB 超过 20 秒)。

所以我使用time.clock()(Python2.7)来查看时间都花在了哪里。我还使用print将这些值导入 Stackdriver。

而且不同的时间根本不一致。

在此处输入图像描述 这是在进入我的函数之后(它实际上是我的路由处理程序)

在此处输入图像描述 这是在离开之前。
我计算的经过时间不过是结束时间 - 开始时间(每个调用time.clock()一次)。

你可以看到它不到一秒。堆栈驱动程序日志显示花费了将近 4 秒。

知道为什么会有这种差异吗?time.clock()在 App engine flex 上没有按预期工作?

谢谢

标签: pythonapp-engine-flexible

解决方案


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 时间量。


推荐阅读