У меня есть простая программа для обнаружения, когда файл создается в каталоге. Он должен проверять каждую минуту, если есть новый файл, а затем сбросить таймер, если нет нового файла.Таймер не сбрасывается
import os
import threading
import time
import sys
def detector():
filenames = os.listdir('/home/username/Documents/')
if filenames:
for i in filenames:
#do things
print('I started a thread!')
sys.stdout.flush()
threading.Thread(target=start_timer).start()
def start_timer():
print('I started a threaded timer at', t.ctime())
sys.stdout.flush()
threading.Timer(60, detector)
#UI stuff here
При запуске без каких-либо файлов в каталоге, то сценарий просто печатает:
I started a thread!
I started a timer at [insert time here]
но только один раз. Это заставляет меня думать, что что-то не так с моей резьбой (я никогда не использовал потоки раньше). Я не знаю, должна ли она быть потоковой, но программа не может ждать обычного таймера, потому что таймер заставляет пользовательский интерфейс зависать, пока таймер не будет выполнен.
Что вы хотите достичь, установив целевой поток, созданный в конце 'детектора',' start_timer', а затем установив обратный вызов 'Timer' в' детектор'? Кстати, 'Timer' является подклассом' Thread', поэтому, чтобы начать его, вы должны в теории называть 'start' ... – nbro
Ох ... да ... начните ... Я надеялся начать таймер, чтобы проверить, был ли файл создан без зависания пользовательского интерфейса. – Steampunkery
Многопоточность - это не тривиальная задача программирования. Вы должны сначала понять основы ... – nbro