Как назначить глобальную переменную в многопоточности в Python - PullRequest
0 голосов
/ 03 июля 2019

Я использую многопоточность и она работает нормально. В первом потоке, как упомянуто в коде, мне нужно, чтобы мой файл csv был сохранен с именем файла как Logger1 в первый раз, и после того, как этот файл logger1 пересек 1000 строк, он должен бытьпреобразуется в zip-файл и удаляется, в то время как значение i увеличивается на 1. Теперь после этого дальнейшие данные должны быть сохранены в файле csv с именем файла в качестве logger2.

Если переменной 'i' присвоено значение в пути, как показано в коде, то появляется несвязанная локальная ошибка, указывающая на переменную i, на которую ссылаются перед присвоением.Если в начале я объявлю его как глобальный i вместо просто i = 1, появится та же ошибка.Если я присвоил значение внутри u1thread, это значение никогда не будет увеличено, потому что каждый раз, когда выполняется поток, я устанавливается равным 1.

    i=1
       class u1Thread(threading.Thread):
         def run(self):                              
           while True:                 
                 export_csv = x.to_csv (r'/home/pi/Logger' + str(i) 
                              + '.csv', index = None, mode='a', 
                             header=False)
                input_file = open("Logger" + str(i) + ".csv","r+")
                             reader_file = csv.reader(input_file)
                l = len(list(reader_file))
                if (l > 1000) :
                  jungle_zip = zipfile.ZipFile('Logger' + str(i) + 
                               '.zip', 'w')
                  jungle_zip.write('Logger' + str(i) + '.csv', 
                               compress_type=zipfile.ZIP_DEFLATED)
                  jungle_zip.close()
                  os.remove("Logger" + str(i) + ".csv")
                  i +=1

       class vfThread(threading.Thread):
         def run(self):
          while True:
          ret, frame=video.read()
...