2016-07-05 57 views

回答

3

問題的答案取決於你的努力來實現:

time.sleep(delayTime)

  • 措施:暫停當前線程的執行對於給定秒數。
  • 任何捕獲信號將終止睡眠()以下的該信號的捕捉常規

select.select執行([],[],[],delayTime)
這是一個簡單的接口到Unix select()系統調用。前三個參數是'可等待對象的序列:

  • 的rlist:等到讀就緒
  • wlist:等到準備好寫
  • 的Xlist:等待「異常條件」

所以現在,在瞭解了兩個接口之後,我們可以理解答案取決於目的:
如果您只想暫停當前線程 - 第一個選項更簡單。但是如果有對象等待 - 使用第二種方法。 在效率的溫度 - 我不認爲如果你正在尋找的是最簡單的用例(只是暫停主線程),那麼不存在差異。

1

非常簡單的hackup python中的測試與調用timeit,但我愛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 
1

你如何定義效率?在大多數情況下,sleep和select一直用來觀察是否有空間/緩衝區。如果空間不可用,那麼我們可以選擇等待並查看緩衝區何時爲空,並且我們可以執行我們的操作。 sleep()在內部選擇()。所以,我想你認爲這很重要。

相關問題