Обязательное «это не проверено», поскольку, конечно, у меня нет фактического устройства.
Если я правильно понял, устройство инициирует вызов onAccelerationChangeHandler()
всякий раз, когда читается новое значение, иВы хотите, чтобы этот обработчик записывал в новый файл, если с момента первого вызова обработчика прошло более двух минут.
Вы можете попробовать это:
def onAccelerationChangeHandler(self, acceleration, timestamp):
if 'file_creation_time' not in onAccelerationChangeHandler.__dict__:
# save the time in seconds since epoch for first file creation
onAccelerationChangeHandler.file_creation_time = time.time()
if 'file_name' not in onAccelerationChangeHandler.__dict__:
# get the first file name
onAccelerationChangeHandler.file_name = fileNamer()
now = time.time()
if (now - onAccelerationChangeHandler.file_creation_time) > 120:
# The file was created more than two minutes ago!
onAccelerationChangeHandler.file_creation_time = now # new creation time!
onAccelerationChangeHandler.file_name = fileNamer() # new file name!
save_stuff_into_this_file(onAccelerationChangeHandler.file_name)
Теперь я неполностью уверен в позиции сообщества Python относительно статических переменных в функциях.Обычным способом является создание класса и сохранение статических данных в качестве атрибутов экземпляра, но поскольку этот метод несколько связан с экземпляром объекта библиотеки, я не совсем уверен, что это можно сделать.