Я анализирую последнюю строку постоянно обновляемого файла журнала.Если он совпадает, я хочу вернуть совпадение в список и запустить другую функцию, используя эти данные.Мне нужно следить за новыми записями и анализировать их, даже когда новая функция продолжается.
Я работаю над этим с разных точек зрения около недели с переменным успехом.Я попытался создать многопоточность, но столкнулся с проблемами при получении возвращаемого значения, я попытался использовать глобальную переменную, но не смог заставить ее работать.Я сейчас пытаюсь asyncio, но у меня еще больше проблем, чтобы заставить это работать.
def tail():
global match_list
f.seek(0, os.SEEK_END)
while True:
line = f.readline()
if not line:
time.sleep(0.1)
continue
yield line
def thread():
while True:
tail()
def somefun(list):
global match_list
#do things here
pass
def main():
match_list = []
f = open(r'file.txt')
thread=threading.Thread(target=thread, args=(f,))
thread.start()
while True:
if len(match_list) >= 1:
somefun(match_list)
if __name__ == '__main__':
main()
Написал вышеизложенное из памяти. Я хочу, чтобы tail () возвратил строку в список, который может использовать somefun ().У меня возникли проблемы с тем, чтобы заставить его работать, я буду использовать многопоточность или asyncio ... что угодно, чтобы запустить его на этом этапе.