python - 最小化计算时间(即 : "print" slows it down)

标签 python algorithm

<分区>

我有一个返回第 n 个值的简单 fibonacci(n) 函数。 main()代码如下:

def main():
# Programming 101, basic recursion
  start = time.clock()
  for i in range(36):
      print fibonacci(i)
  end = time.clock()
  print "Time elapsed = ", end - start, "seconds"

# Basic tweak no.1
  start2 = time.clock()
  list_fib = []
  for i in range(36):
      list_fib.append(fibonacci(i))
  print list_fib
  end2 = time.clock()
  print "Time elapsed = ", end2 - start2, "seconds"

Windows 和 Linux 上的典型输出:

....
9227465
Time elapsed =  0.246583058361 seconds
[0, 1, 1, ....
Time elapsed =  0.00865510658878 seconds

问题:是否有 Python 的数值食谱的 HOWTO 或指南?在我的示例中,“打印”循环的成本非常高,应该避免。

最佳答案

通过将数据附加到列表中来保存数据。然后像在第二个示例中那样一次打印它。这是 python 中的常见习语。你经常使用类似的东西:

print '\n'.join(milistofdatastrings)

您收藏了 scipy performance tips here .我也喜欢numpy functions and examples的这本纲要.

虽然不是具体的数字,但您有一个 python tricks for performance 的集合.

关于python - 最小化计算时间(即 : "print" slows it down),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8157581/

相关文章:

python - 如何在一列中创建术语计数并在 pandas 数据框中将计数作为附加值异常终止

c++ - 替换字符串中空格的策略

algorithm - 具有任意大小递归调用的算法的运行时间

php数学算法

python - 无法从 Windows 上的 Python 连接到 MSSQL Server

python - 如何编辑嵌入消息 - discord.py

c# - 从特定索引启动单词生成器

algorithm - 检测时间序列数据的变化

python - 无法导入 Tornado 子模块

python - 我可以将大数字作为字符串输出到 csv