0

我们正在使用python/DjangoWeb 开发。在开发阶段进行编码时,我倾向于将print语句放在很多地方来检查代码的控制流。并且为服务器上传了带有打印语句的相同代码,我知道日志记录是一个更合适的地方,但我发现自己更喜欢print.

我想知道几行代码会使网站变慢,如果它变慢的话。假设我有 100 行代码,然后我添加了 5 条print语句。另一种研究方法是我写了 105 行代码。那么从这个意义上说,我不应该有所作为(我想)。

这会使网站变慢吗?

4

2 回答 2

2

是的,因为在输出之前需要将参数转换为字符串,这可能是一项昂贵的操作。

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

于 2013-10-22T20:10:45.170 回答
0

打印到控制台总是很慢......

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 开销。

于 2013-10-22T20:15:48.857 回答