关于线程锁
来源:7-5 实战—实现爬取信息持久化业务-1
Umud
2020-12-05 21:10:03
# 具体遇到的问题
1.我不明白这里为什么加锁?写入数据库的 data 是一个线程独有的资源,data 又不是多个线程公用的数据。加锁有什么作用?
2.之前加锁的语法:lock.acquire() 和 lock.release() ,本节课 用 with ,不明白?
在这里输入代码,可通过选择【代码语言】突出显示
1回答
同学,你好,
1、文件是相互独立的,但容易发生资源争抢的问题,同时写入文件使之卡住,由于不规律随机的原因,写入文件的数据也可能是乱码
某个线程要更改共享数据时,先将其锁定,此时资源的状态为“锁定”,其他线程不能更改;直到该线程释放资源,其他的线程才能再次锁定该资源。这样保证了每次只有一个线程进行写入操作,从而保证了多线程情况下数据的正确性。
2、python中with的作用其实就是省去了开启关闭的功能,with lock和lock.acquire()、lock.release()功能是一样的,会自动获取和释放锁(资源)。
相似问题