【python 多线程存数据lock(锁)】

该博客通过两个案例展示了如何在多线程环境下使用Python的线程锁确保文件写入操作的数据完整性。案例一中,使用ThreadPoolExecutor并结合线程锁避免了数据丢失,成功将文本内容写入文件。案例二则单独展示了线程锁的使用。这两个例子突出了线程同步在并发编程中的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

多线程存数据不会数据丢失

案例一、

这里只是简单的线程池
import os
from concurrent.futures import ThreadPoolExecutor
from time import perf_counter
import time
import threading as th
 
lock=th.Lock()
 
def write(text,path='re.txt'):
    lock.acquire()
    with open(path,'a') as fp:
        fp.write(text)
    lock.release()
 
def make_test_txt(path='test_txt.txt'):
    with open(path,'w') as fp:
        for i in range(100):
            fp.write(str(i)+'\n')
 
#os.remove('re.txt')
 
make_test_txt()
with open('test_txt.txt') as fp:
    texts=fp.readlines()
print(len(texts))
 
t=perf_counter()
 
pool=ThreadPoolExecutor(max_workers=2)
pool.map(write,texts)
pool.shutdown(wait=True)
 
time.sleep(1)
with open('re.txt') as fp:
    texts2=fp.readlines()
print(len(texts2))
 
 

案例二、

import threading as th
 
lock=th.Lock()

def make_test_txt(path='test_txt.txt'):
    with open(path,'w') as fp:
        for i in range(100):
            fp.write(str(i)+'\n')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

火浴R

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值