Python 在操作系统和内核之间,但我在Ubuntu中看不到任何粒度,我在MS7中看到1毫秒的粒度。建议使用不同的time.sleep实现,而不仅仅是不同的滴答声频率。更仔细的检查表明Ubuntu的粒度为1μs,但这是因为我使用time.time函数来测量精度。
以下是我对威尔伯特答案的后续回答:Mac OS X Yosemite也是如此,因为它还没有被提到太多 看起来很多时候它的睡眠时间大约是你要求的1.25倍,有时睡眠时间是你要求的1到1.25倍。它几乎从不(1000个样本中约有两个)睡眠时间比你要求的睡眠时间长1.25倍 另外(未明确显示)1.25的关系似乎保持得很好,直到低于0.2毫秒,之后开始变得有点模糊。此外,在请求的时间量超过20毫秒后,实际时间似乎比您请求的时间长约5毫秒Python 在操作系统和内核之间,但我在Ubuntu中看不到任何粒度,我在MS7中看到1毫秒的粒度。建议使用不同的time.sleep实现,而不仅仅是不同的滴答声频率。更仔细的检查表明Ubuntu的粒度为1μs,但这是因为我使用time.time函数来测量精度。,python,time,sleep,Python,Time,Sleep,以下是我对威尔伯特答案的后续回答:Mac OS X Yosemite也是如此,因为它还没有被提到太多 看起来很多时候它的睡眠时间大约是你要求的1.25倍,有时睡眠时间是你要求的1到1.25倍。它几乎从不(1000个样本中约有两个)睡眠时间比你要求的睡眠时间长1.25倍 另外(未明确显示)1.25的关系似乎保持得很好,直到低于0.2毫秒,之后开始变得有点模糊。此外,在请求的时间量超过20毫秒后,实际时间似乎比您请求的时间长约5毫秒 同样,它在OS X中的sleep()实现似乎与Windows或Wi
同样,它在OS X中的
sleep()
实现似乎与Windows或Wilbert使用的任何Linux内核都完全不同。下面是我对Wilbert回答的后续说明:Mac OS X Yosemite也是如此,因为它还没有被提到太多
看起来很多时候它的睡眠时间大约是你要求的1.25倍,有时睡眠时间是你要求的1到1.25倍。它几乎从不(1000个样本中约有两个)睡眠时间比你要求的睡眠时间长1.25倍
另外(未明确显示)1.25的关系似乎保持得很好,直到低于0.2毫秒,之后开始变得有点模糊。此外,在请求的时间量超过20毫秒后,实际时间似乎比您请求的时间长约5毫秒
同样,OSX中的
sleep()
的实现似乎与Windows或Wilbert使用的Linux内核完全不同。一个小小的修正,有人提到睡眠可以通过信号提前结束。里面说,
在版本3.5中更改:即使
睡眠被信号中断,除非信号处理器
引发异常(有关基本原理,请参阅)
一个小小的修正,一些人提到睡眠可以通过一个信号提前结束。里面说, 在版本3.5中更改:即使 睡眠被信号中断,除非信号处理器 引发异常(有关基本原理,请参阅)
最近在Windows10上的Python3.7上对此进行了测试。精度大约为1ms。最近在Windows 10上的Python 3.7上测试了这一点。精度约为1ms
def start(self):
sec_arg = 10.0
cptr = 0
time_start = time.time()
time_init = time.time()
while True:
cptr += 1
time_start = time.time()
time.sleep(((time_init + (sec_arg * cptr)) - time_start ))
# AND YOUR CODE .......
t00 = threading.Thread(name='thread_request', target=self.send_request, args=([]))
t00.start()
不要使用变量传递sleep()的参数,必须将计算直接插入sleep()中
我的终点站回来了 一,───── 17:20:16.891 ─────────────────── 二,───── 17:20:18.891 ─────────────────── 三,───── 17:20:20.891 ─────────────────── 四,───── 17:20:22.891 ─────────────────── 五,───── 17:20:24.891 ─────────────────── 689─── 17:43:12.891 ──────────────────── 690─── 17:43:14.890 ──────────────────── 691─── 17:43:16.891 ──────────────────── 692─── 17:43:18.890 ──────────────────── 693─── 17:43:20.891 ──────────────────── 727─── 17:44:28.891 ──────────────────── 728─── 17:44:30.891 ──────────────────── 729─── 17:44:32.891 ──────────────────── 730─── 17:44:34.890 ──────────────────── 731─── 17:44:36.891 ──────────────────── 不要使用变量传递sleep()的参数,必须将计算直接插入sleep()中
我的终点站回来了 一,───── 17:20:16.891 ─────────────────── 二,───── 17:20:18.891 ─────────────────── 三,───── 17:20:20.891 ─────────────────── 四,───── 17:20:22.891 ─────────────────── 五,───── 17:20:24.891 ─────────────────── 689─── 17:43:12.891 ──────────────────── 690─── 17:43:14.890 ──────────────────── 691─── 17:43:16.891 ──────────────────── 692─── 17:43:18.890 ──────────────────── 693─── 17:43:20.891 ──────────────────── 727─── 17:44:28.891 ──────────────────── 728─── 17:44:30.891 ──────────────────── 729─── 17:44:32.891 ──────────────────── 730─── 17:44:34.890 ──────────────────── 731─── 17:44:36.891 ────────?
time.sleep(0.05)
from datetime import datetime
import time
def check_sleep(amount):
start = datetime.now()
time.sleep(amount)
end = datetime.now()
delta = end-start
return delta.seconds + delta.microseconds/1000000.
error = sum(abs(check_sleep(0.050)-0.050) for i in xrange(100))*10
print "Average error is %0.2fms" % error
def start(self):
sec_arg = 10.0
cptr = 0
time_start = time.time()
time_init = time.time()
while True:
cptr += 1
time_start = time.time()
time.sleep(((time_init + (sec_arg * cptr)) - time_start ))
# AND YOUR CODE .......
t00 = threading.Thread(name='thread_request', target=self.send_request, args=([]))
t00.start()
import time
def sleep(duration, get_now=time.perf_counter):
now = get_now()
end = now + duration
while now < end:
now = get_now()
def test():
then = time.time() # get time at the moment
x = 0
while time.time() <= then+1: # stop looping after 1 second
x += 1
time.sleep(0.001) # sleep for 1 ms
print(x)