В конечном итоге я пытаюсь запустить несколько потоков threading.timer с разными временами ожидания, но у меня возникли проблемы с тем, чтобы запустить один поток на основе одиночных переменных для правильной работы.Threading.timer interval random
Я добавил строки, чтобы попытаться устранить время обработки, но я все еще не получаю прогнозируемых результатов. Когда я запускаю этот скрипт:
import threading
import datetime
import time
def foo():
print datetime.datetime.now()
print datetime.datetime.now()
iterations = 10
wait = 1
thread = None
next_call = time.time()
while iterations > 0:
if thread == None or thread.is_alive() == False:
next_call = next_call + wait
thread = threading.Timer(next_call - time.time(), foo)
thread.start()
iterations -= 1
я получаю этот выход:
2015-08-04 16:46:17.606658
2015-08-04 16:46:18.656710
2015-08-04 16:46:19.607990
2015-08-04 16:46:20.654599
2015-08-04 16:46:21.626649
2015-08-04 16:46:22.753762
2015-08-04 16:46:23.610284
2015-08-04 16:46:24.729185
2015-08-04 16:46:25.609802
2015-08-04 16:46:26.608769
2015-08-04 16:46:27.610249
который имеет, казалось бы, случайный образец неопределенности в количестве времени, функция таймера ожидания. Есть ли какой-то способ, которым я могу быть уверен, что функция будет ждать правильного времени?
Я в значительной степени привязан к конкретному использованию этой настройки, малины Pi с raspbian (на основе Debian) и встроенный компилятор с консолью unix. Это какая-то версия python 2.7, я могу уточнить завтра. Любое понимание того, почему это может произойти? –
@NickRothbacher: Я могу только предположить, что ваш компьютер/процессор сильно загружен какой-либо другой программой или службой. –
Хм, хорошо работает 'top' означает, что нет процесса, использующего более половины процента емкости процессора, и ни один из них не использует больше, чем 1% оперативной памяти. Я буду продолжать смотреть, но я думаю, что мне, возможно, придется довольствоваться неточностями. –