我曾经遇到过这个问题几次;重启python似乎工作(或ipython)。但是,例如,这是运行以下代码的一种可能输出:
startt = time.time()
for i in range(4):
time.sleep(1)
print '%.3f'%(time.time()-startt)
我获得:
9.989
10.989
11.990
12.991
为什么它在开始工作之前等待这么久?偶尔,它会在我运行命令后的10秒甚至11秒开始。
我使用Mac OS X(Mavericks),IPython 1.2.1(使用pylab),Python 2.7.5
我导入: os,cv2,time,random,Quartz,LaunchServies,pdb,sys,appscript和numpy。
答案 0 :(得分:7)
暂停执行指定的秒数。参数可以是浮点数,以指示更精确的睡眠时间。实际的暂停时间可能小于请求的时间,因为任何捕获的信号将在执行该信号的捕获例程后终止sleep()。 此外,由于系统中其他活动的安排,暂停时间可能比任意金额要求的时间长。
time.sleep
的实际等待时间无法保证,具体取决于主机系统的加载方式。如果您机器上的某些东西占用了资源,Python进程可能会被延迟直到恢复。
但是,秒的延迟太高了。您是否有机会在Python交互式shell中尝试此操作?如果是这样,它可能会干扰,例如:
>>> import time
>>> startt = time.time()
>>> for i in range(4):
... time.sleep(1)
... print '%.3f'%(time.time()-startt)
...
3.147
4.147
5.147
6.147
>>> startt = time.time()
>>> for i in range(4):
... time.sleep(1)
... print '%.3f'%(time.time()-startt)
...
4.949
5.949
6.949
7.949
因为在编写或粘贴其余代码之前评估startt = time.time()
,这可能需要几秒钟。
但如果我将它包装在一个方法中,它的行为就像预期一样:
>>> def test():
... startt = time.time()
... for i in range(4):
... time.sleep(1)
... print '%.3f'%(time.time()-startt)
...
>>> test()
1.000
2.000
3.000
4.000
或放入脚本:
import time
startt = time.time()
for i in range(4):
time.sleep(1)
print '%.3f'%(time.time()-startt)
# $ python test.py
# 1.000
# 2.008
# 3.008
# 4.008
在这种情况下,延迟应该是毫秒级,如后一输出中所示。我怀疑它可以达到几秒钟。