首页 > 解决方案 > 如何在python的多线程中分配全局变量

问题描述

我正在使用多线程并且它工作正常。在代码中提到的第一个线程中,我需要我的 csv 文件第一次以文件名作为 Logger1 保存,并且在这个 logger1 文件超过 1000 行之后它应该被转换为 zip文件,并在 'i' 增加 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()

标签: pythonmultithreadingcsvglobal-variablesglobal

解决方案


推荐阅读