time.clock() 和 App Engine 日志时间之间的时间非常不同

Very different times between time.clock() and App Engine log time

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

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

而且不同的时间一点都不一致

这是刚进入我的功能后(实际上是我的路由处理程序)

这是离开之前的样子。
我计算的经过时间不过是结束时间 - 开始时间(每次调用 time.clock())。

你可以看到它只用了不到一秒。 stackdriver 日志显示几乎花费了 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 次。