Python 在操作系统和内核之间,但我在Ubuntu中看不到任何粒度,我在MS7中看到1毫秒的粒度。建议使用不同的time.sleep实现,而不仅仅是不同的滴答声频率。更仔细的检查表明Ubuntu的粒度为1μs,但这是因为我使用time.time函数来测量精度。

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

以下是我对威尔伯特答案的后续回答:Mac OS X Yosemite也是如此,因为它还没有被提到太多

看起来很多时候它的睡眠时间大约是你要求的1.25倍,有时睡眠时间是你要求的1到1.25倍。它几乎从不(1000个样本中约有两个)睡眠时间比你要求的睡眠时间长1.25倍

另外(未明确显示)1.25的关系似乎保持得很好,直到低于0.2毫秒,之后开始变得有点模糊。此外,在请求的时间量超过20毫秒后,实际时间似乎比您请求的时间长约5毫秒


同样,它在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)