#python #time
#python #время
Вопрос:
Итак, я работаю над проектом с RPi, и (с кодом python) я хочу, чтобы он проверял что-то каждые 0,00001 секунды и отмечал количество времени, затраченного до выполнения условия.
Я использую time.sleep()
, импортируя время
Если я установлю это значение равным 0,001 или больше, только тогда это сработает, если оно ниже 0,001, тогда время становится либо медленнее, либо быстрее, например. для проверки 1 секунды требуется около 3 секунд…
Что я могу сделать? Можете ли вы предложить какой-либо другой способ, кроме time.sleep ?
Следующий код просто говорит
if GPIO 16 on the pi is high,
then, until GPIO 32 is not high, it will time the time
И цикл прерывается, и код заканчивается, когда GPIO 32 находится на высоком уровне
Первый цикл while заключается в том, что программа продолжает цикл, для чего мне это было нужно, вы можете игнорировать
import RPi.GPIO as hello
import time
hello.setwarnings(False)
hello.setmode(hello.BOARD)
hello.setup(16, hello.IN)
hello.setup(32, hello.IN)
t=0
while 1:
##Main Code, with the problem...
while 1:
t=0
if hello.input(16)==1:
print(t)
while hello.input(32)==0:
t=t 0.00001
time.sleep(0.00001)#Not Working
if hello.input(32)==1:
print(t)
print("Speed=",14/t,"cm/s")
break
Ответ №1:
Существуют ограничения для всех функций, критичных ко времени. Я предлагаю переосмыслить использование sleep() и использовать объекты Timer, как указано в документальном фильме о Python. https://docs.python.org/2.4/lib/timer-objects.html
Ответ №2:
Здесь следует отметить как минимум две вещи:
- Аргумент
time.sleep()
и базовый системный вызов — это нижняя граница. Нет гарантии, что система не будет спать дольше. (На самом деле мы можем предсказать, что это произойдет, если обычно только на небольшую величину, если загрузка системы невелика.) - Выполнение любого кода на Python за наносекундный промежуток времени нереально на современном оборудовании.
>>> import timeit >>> timeit.timeit('pass', number=10000) 8.20159912109e-05