什么会更好?
time.sleep(delayTime)
或
select.select([],[],[],delayTime)
他们是等同的吗?选择更有效率吗?
答案 0 :(得分:3)
答案取决于你想要达到的目标:
time.sleep(delayTime)
select.select([],[],[],delayTime)
这是Unix select()
系统调用的简单接口。前三个参数是“等待对象”的序列:
现在,我们理解了两个界面,我们可以理解答案取决于目的:
如果您只想暂停当前线程 - 第一个选项更简单。但是如果有对象要等待 - 使用第二种方法。
在效率的温度下 - 如果你所寻找的只是最简单的用例(只是暂停主线程),我认为不存在差异。
答案 1 :(得分:2)
使用调用timeit
来训练python中的测试非常简单,但我喜欢ipython进行快速测试(http://ipython.org/)。这是我的结果:
$ ipython
import time,select
%timeit time.sleep(0)
1000000 loops, best of 3: 655 ns per loop
%timeit select.select([],[],[],0)
1000000 loops, best of 3: 902 ns per loop
但是如果你没有访问ipython,并且更喜欢命令行中的本地timeit
:
$ python -m timeit -s "import time,select" "time.sleep(0)"
1000000 loops, best of 3: 0.583 usec per loop
$ python -m timeit -s "import time,select" "select.select([],[],[],0)"
1000000 loops, best of 3: 0.777 usec per loop
答案 2 :(得分:1)
您如何定义效率?在大多数情况下,睡眠和选择一直用于观察是否有空间/缓冲区。如果空间不可用,那么我们可以选择等待,看看缓冲区何时为空,我们可以执行我们的操作。 sleep()内部选择()。所以,我认为这对你感到满意很重要,我想。