Проблема скрипта Python после сборки и упаковки - PullRequest
1 голос
/ 29 апреля 2010

Я написал скрипт Python для сканирования Wi-Fi и отправки данных на сервер, я установил значение интервала, поэтому он продолжает сканировать и отправлять данные, он читает из файла config.txt, где я устанавливаю значение интервала для сканирования, Я также добавляю да / нет в мой конфигурационный файл, поэтому «нет» он будет сканировать только один раз, и если «да» он будет сканировать в соответствии с уровнем интервала,

мой код как показано ниже

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) после сборки, но не знаю, как решить

Может ли кто-нибудь мне помочь

спасибо

1 Ответ

0 голосов
/ 29 апреля 2010

Я думаю, что проблема в состоянии цикла. Предположим, что is_set() возвращает False, вторая часть всегда равна False. Хотя intervalTime неизвестно, я думаю, что оно положительное (имеет ли смысл отрицательный интервал времени?) И count никогда не меньше self.iterations: оба они 0.

Но код, который вы выложили, слишком мал, ему не дано знать, как именно работает.

    while not self.finished.is_set() and (self.iterations <= 0 or count < self.iterations):
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...