Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python time.time()不是计时_Python_Performance_Time_Semantics - Fatal编程技术网

Python time.time()不是计时

Python time.time()不是计时,python,performance,time,semantics,Python,Performance,Time,Semantics,我正在Wingide101(版本4)的Windows7操作系统上运行Python 3.2。在这种情况下,环境并不重要,但我想我应该具体一点 我的代码如下。它不是最优的,只是找到素数的一种方法: def isPrime2(n): if n == 1: return False count = 0 for i in range(2,n+1,2): if n%i == 0: count = count + 1 if count > 2:

我正在Wingide101(版本4)的Windows7操作系统上运行Python 3.2。在这种情况下,环境并不重要,但我想我应该具体一点

我的代码如下。它不是最优的,只是找到素数的一种方法:

def isPrime2(n):
  if n == 1:
      return False  
  count = 0
  for i in range(2,n+1,2):
    if n%i == 0:
      count = count + 1
      if count > 2:
        return False
  for i in range(1,n+1,2):
    if n%i == 0:
      count = count + 1
      if count > 2:
        return False         
  if count == 2:
    return True

start = time.time()
x = isPrime2(571)
end = time.time()
time_interval = end - start
print("%1.15f"%time_interval)
print(x)
我遇到的问题是time.time()函数似乎不是计时函数。当我运行这个程序时,我得到

0.000000000000000
True
我也尝试了30个数字,所有数字都保持为零

考虑到我有多个For循环,我的程序不可能这么快

我的问题是,为什么我的函数没有计时?如果是的话,为什么我知道它不应该这么快呢?

time.time()
实际上不能保证分辨率超过1秒。您需要使用分辨率更高的
timeit
模块

(编辑)


上述代码替换提问者代码中的
start=time.time()
行中的代码,两种替代方法产生类似的计时。另请参见。

在Windows上,您希望改用
time.time()
的粒度仅为1/60秒,而前者的粒度为微秒

或者,要保持跨平台,请改用,这将为您的平台使用正确的
time
功能:

import timeit

start = timeit.default_timer()

当我用timeit.timeit()代替time.time()时,timeit工作了。我感谢你这么快的答复。我很好奇为什么我的时代是消极的。我不得不将时间间隔改为开始-结束。@史蒂文:你不能用
timeit.timeit()
代替你的
time.time()
。您可以使用@Martijn Pieters显示的
timeit.default_timer(),或者将对函数的调用作为
timeit.timeit()
的参数。我已经编辑了我的答案以显示适当的用法
timeit.timeit()`只返回调用默认
timeit
设置函数一百万次所需的时间,这样第二次调用将随机返回比第一次调用大大约一半的时间。
import timeit

start = timeit.default_timer()