time.clock()和App Engine日志时间之间的时间差异很大

时间:2018-10-26 15:40:27

标签: python app-engine-flexible

我尝试对App Engine flex应用中的延迟问题进行故障排除,我怀疑我的服务器花费的时间太长了(Chrome提供的TTFB超过20秒)。

因此,我使用time.clock()(Python2.7)来查看时间。我还使用print将这些值放入Stackdriver。

不同的时间根本不一致。

enter image description here 这是在输入函数之后(实际上是我的路由处理程序)

enter image description here 这就是离开之前的时刻。
我计算出的经过时间不过是结束时间-开始时间(每个调用time.clock()一次)。

您可以看到它不到一秒钟。堆栈驱动程序日志显示耗时将近4秒钟。

有人知道为什么会有这种区别吗? time.clock()在App引擎flex上无法正常工作?

谢谢

1 个答案:

答案 0 :(得分:1)

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资源时间。