这里记一下,因为需要跳出嵌套for循环,在if里面加了一个break来跳出,代码是这样的
for file in txtname:
txtcontent = myzip.open(file).readlines() # 返回一个文件的内容
# print(txtcontent)
#print(file + "File content read and insert......")
# 将txt文件内容读取出来
for onelinedata in txtcontent:
if judge(onelinedata.decode()):
lock.acquire()
if g_counterdata >= DATA_NUM:
break
with open(target, "a") as f:
f.write(onelinedata.decode())
g_counterdata += 1
lock.release()
# 正常循环完将一个文件内容插入数据到datas中,就执行一下语句
else:
# print(file + " insert success!!!")
continue # 继续下次循环文件读取
# 没有执行上面语句块,说明是通过break跳出的,再次跳出上层for
break
注意锁操作内,使用了break,这样会把锁一直锁着,而没有解开。。。。当时调试了半天才发现这种低级的错误
就改了代码
if g_counterdata >= DATA_NUM:
break
lock.acquire()
with open(target, "a") as f:
f.write(onelinedata.decode())
g_counterdata += 1
lock.release()
把break放在外边,这样就没有卡死了