2010-04-29 2 views
1

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

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

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() 

однажды я упаковать мой код, его работать только когда я установил мой конфигурационный файл установлен на «нет», где он сканировать только один раз, но когда я установил свой конфигурационный файл, чтобы «да», нет никакого прогресса на всех, так что я foun d, что есть проблема с моим классом RepeatTimer (Таймер) после создания, но не знает, как решить

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

благодаря

ответ

0

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

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

while not self.finished.is_set() and (self.iterations <= 0 or count < self.iterations): 
Смежные вопросы