python - 如何在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()
解决方案
推荐阅读
- c# - .net 核心文件传输到网络位置
- android - 在recyclerview android中使用setImageBitmap时应用程序缓慢
- android - Recyclerview 不显示 Firebase 数据
- javascript - 如何将这个带有字符串的复杂 json 转换为普通的 json 对象,如输出
- java - swagger-ui 中的 OPTIONS、HEAD、PATCH 方法,但在 RestController 中没有
- c# - 如何在 0 - 1 随机数生成器 c# 中保持最高连胜
- go - Go 例程未执行
- sql - SQL查询耗时比预期长,如何优化?
- file - Gnuplot re 在重新启动计数后绘制线条
- java - 为什么迭代 Empty Map 不会在 Java 中抛出任何异常