print语句是否会导致websi的性能问题

2024-04-25 16:42:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我们正在使用python/Django进行web开发。在开发阶段,我倾向于把print语句放在很多地方来检查代码的控制流。 并为服务器上传与print语句相同的代码, 我知道日志是一个更适合的地方,但我发现自己更适合print。在

我想知道有几行代码会使站点变慢,如果它使它变慢。 假设我有100行代码,并在此基础上添加了5条print语句。另一种研究方法是我写了105行代码。从这个意义上说,我不应该有什么不同(我想)。在

这会使网站变慢吗?在


Tags: django方法代码服务器web站点网站地方
2条回答

打印到控制台的速度总是很慢。。。在

def computationally_expensive_function(x):
    xl = reversed(range(x)[1:])
    y = x
    for z in xl:
        y = y * z
    return y

In [16]: %timeit computationally_expensive_function(5)
1000000 loops, best of 3: 1.46 us per loop

In [17]: %timeit print computationally_expensive_function(5)
<lots of prints>
100 loops, best of 3: 1.87 ms per loop

如果我取400的阶乘,那么每次迭代的计算时间将达到147uS,打印时间将达到3.5ms。这意味着,仅打印结果会导致它在小情况下的时间是100倍,在长的情况下是20倍。在

但是。。。与任何基于性能的东西一样,这并不意味着你真的有问题。如果它是在一个紧密的循环-非常糟糕。如果代码中每隔几分钟就调用一次,那么额外的1ms开销你甚至不会注意到。在

是的,因为参数在输出之前需要转换成字符串,这可能是一个代价高昂的操作。在

然而,使用print会导致另一个问题。一些WSGI容器,尤其是其中的mod WSGI,不喜欢默认发送到stdout的任何内容,因此每当发生这种情况时都会引发异常。您可以通过打印到stderr来解决这个问题,但是性能问题仍然存在。在

相关问题 更多 >