如何在Python中的多线程中分配全局变量

2024-04-27 04:05:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用多线程,它的工作很好。在第一个线程中提到的代码,我需要我的csv文件与文件名保存为Logger1的第一次,这个Logger1文件已经跨越1000行,它应该被转换成zip文件,并删除,而'我'得到1递增。现在在这之后,进一步的数据应保存在csv文件中,文件名为logger2

如果变量“i”按代码所示的方式赋值,则会出现未绑定的局部错误,说明在赋值之前引用了变量i。如果我像global 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()

Tags: 文件csv代码声明文件名错误ziplogger