Python 显示进度

标签 python python-2.7 progress-bar primes progress

我有这个Python代码来生成素数。我添加了一小段代码(在# Start Progress code# End Progress Code之间)来显示操作进度,但它减慢了操作速度。

#!/usr/bin/python

a = input("Enter a number: ")
f = open('data.log', 'w')

for x in range (2, a):
  p = 1
  # Start progress code
  s = (float(x)/float(a))*100
  print '\rProcessing     ' + str(s) + '%',
  # End progress code
  for i in range(2, x-1):
    c = x % i
    if c == 0:
      p = 0
      break
  if p != 0:
    f.write(str(x) + ", ")

print '\rData written to \'data.log\'. Press Enter to exit...'

raw_input()

我的问题是如何在不减慢实际代码/循环速度的情况下显示操作的进度。提前致谢;-)

最佳答案

回答你的问题 I/O 非常昂贵,因此打印出你的进度将对性能产生巨大影响。如果可能的话我会避免打印。

如果您关心速度,可以使用一个非常好的优化来大大加速您的代码。

对于你的内部for循环,而不是

  for i in range(2, x-1):
    c = x % i
    if c == 0:
      p = 0
      break

使用

  for i in range(2, x-1**(1.0/2)):
    c = x % i
    if c == 0:
      p = 0
      break

您只需从 2 的范围迭代到您要进行素性测试的数字的平方根。

您可以使用此优化来抵消打印进度造成的任何性能损失。

关于Python 显示进度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24209414/

相关文章:

python - 如何对图像进行人脸识别并确定其中的人脸是否已知?

python - 在 Python 中覆盖 "remaining elements truncated"

python - 压缩文件有额外不需要的文件夹

javascript - 内联进度条动画,更改触发器以从加载滚动?

python - 我们如何在 python 中转换 01-01-2011 19 :00 to weekdays like Mon , Tue ..?

javascript - Python:解析类似 JSON 的 Javascript 数据结构(带连续逗号)

python - nltk "OMW"带有阿拉伯语的 wordnet

python - 生成内置类型值的字典理解

angular - 是否可以制作带圆 Angular 的垫子进度条?

c# - 如何在winforms上绘制自己的进度条?