Я написал python script для сканирования Wi-Fi и отправки данных на сервер, я установил значение интервала, поэтому он продолжает сканировать и отправлять данные, он читается из файла config.txt, где я устанавливаю значение интервала для сканирование, я также добавляю yes/no в свой файл конфигурации, так что "нет" он будет сканировать только один раз, и если "да" будет сканировать в соответствии с интервальным уровнем,
мой код ниже
import time,.....
from threading import Event, Thread
class RepeatTimer(Thread):
def __init__(self, interval, function, iterations=0, args=[], kwargs={}):
Thread.__init__(self)
self.interval = interval
self.function = function
self.iterations = iterations
self.args = args
self.kwargs = kwargs
self.finished = Event()
def run(self):
count = 0
while not self.finished.is_set() and (self.iterations <= 0 or count < self.iterations):
self.finished.wait(self.interval)
if not self.finished.is_set():
self.function(*self.args, **self.kwargs)
count += 1
def cancel(self):
self.finished.set()
def scanWifi(self):
#scanning process and sending data done here
obj = JW()
if status == "yes":
t = RepeatTimer(int(intervalTime),obj.scanWifi)
t.start()
else:
obj.scanWifi()
после того, как я упакую свой код, его единственный запуск, когда я установил свой конфигурационный файл в значение "нет", где он сканирует только один раз, но когда я установил свой файл конфигурации в "да", прогресс вообще отсутствует, поэтому я обнаружил, что есть проблема с моим классом RepeatTimer (Timer) после сборки, но не знаю, как решить
может кто-нибудь мне помочь
спасибо
Я думаю, проблема в условии цикла. Предположим, что is_set()
возвращает False
, вторая часть всегда False
. Пока intervalTime
неизвестно, я думаю, что он положительный (имеет смысл отрицательный интервал времени?), А count
никогда не меньше self.iterations
: они оба 0
.
Но кода, который вы опубликовали, слишком мало, ему не дано знать, как именно работает.
while not self.finished.is_set() and (self.iterations <= 0 or count < self.iterations):