我已经遇到过这个问题好几次了;重新启动 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、时间、随机、Quartz、LaunchServies、pdb、sys、appscript 和 numpy。
根据time.sleep docs:
暂停执行指定的秒数。该参数可以是浮点数以指示更精确的睡眠时间。实际的挂起时间可能小于请求的时间,因为任何捕获的信号都将在执行该信号的捕获例程后终止 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
在这种情况下,延迟应为毫秒级,如后面的输出所示。我怀疑它能达到几秒钟。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)