Я запускаю скрипт, который генерирует файлы каждые 60 секунд, которые я затем сохраняю в массиве:
my_files = [file1, file2, ..., filen]
Поскольку этот массив продолжает динамически расти, мне нужно рекурсивно продолжать проверять наличие новых файлов. Каждый раз, когда появляются новые файлы, мне нужно добавить их в «очередь» и ждать, пока они будут обработаны путем вызова других функций.
Каков наилучший способ сделать это? Я изучил сторожевой таймер, но он кажется очень сложным для того, что мне нужно Я также попытался использовать следующий класс, который позволит мне рекурсивно проверять мою папку, но затем я не могу перебирать файлы, которые «выбираются», потому что это не list
:
class RepeatedTimer(object):
def __init__(self, interval, function, *args, **kwargs):
self._timer = None
self.interval = interval
self.function = function
self.args = args
self.kwargs = kwargs
self.is_running = False
self.next_call = time.time()
self.start()
def _run(self):
self.is_running = False
self.start()
self.function(*self.args, **self.kwargs)
def start(self):
if not self.is_running:
self.next_call += self.interval
self._timer = threading.Timer(self.next_call - time.time(), self._run)
self._timer.start()
self.is_running = True
def stop(self):
self._timer.cancel()
self.is_running = False
Следующее не будет работать, поэтому я не могу получить доступ к файлам:
my_files = [RepeatedTimer(30, pick_testing_files)]
while True:
if len(my_files) > 0:
files_to_be_processed = my_files.pop()
threading.Thread(target=test, args=(files_to_be_processed)).start()