Что было бы лучше?Какой самый эффективный способ спать в Python?
time.sleep(delayTime)
или
select.select([],[],[],delayTime)
ли они эквивалентны? Выбирается более эффективно?
Что было бы лучше?Какой самый эффективный способ спать в Python?
time.sleep(delayTime)
или
select.select([],[],[],delayTime)
ли они эквивалентны? Выбирается более эффективно?
Ответ зависит от того, что вы пытаетесь достичь:
time.sleep (delayTime):
select.select ([], [], [], delayTime):
Это простой интерфейс к системному вызову Unix select()
. Первые три аргумента являются последовательности 'waitable объектов':
Итак, теперь, когда мы понимаем оба интерфейса, мы можем понять, что Ответ зависит от цели:
Если все, что вы хотите сделать, это приостановить текущий поток - первый вариант проще. Но если есть объект для ожидания - используйте второй метод. В темпе эффективности - я не думаю, что есть различия, если все, что вы ищете, это самый простой вариант использования (просто приостановите основной поток).
Довольно просто взломать тест в 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
Как вы определение эффективности? В большинстве случаев сон и выбор используются, чтобы наблюдать, есть ли пространство/буфер. Если пространство недоступно, у нас есть возможность подождать и посмотреть, когда буфер будет пустым, и мы сможем выполнить наше действие. Спящий режим() внутренне выбирает(). Поэтому, я думаю, это важно, с чем вам удобно, я думаю.
Эффективен на каком ресурсе? –
CPU использование, точность. – edgarstack
Что мешает вам тестировать и сравнивать оба? –