关于线程锁

来源:7-5 实战—实现爬取信息持久化业务-1

Umud

2020-12-05 21:10:03

# 具体遇到的问题
http://img.mukewang.com/climg/5fcb850909a87de610880202.jpg

1.我不明白这里为什么加锁?写入数据库的 data 是一个线程独有的资源,data 又不是多个线程公用的数据。加锁有什么作用?

2.之前加锁的语法:lock.acquire() 和 lock.release() ,本节课 用 with ,不明白?

在这里输入代码,可通过选择【代码语言】突出显示

写回答

1回答

时间,

2020-12-06

同学,你好,

1、文件是相互独立的,但容易发生资源争抢的问题,同时写入文件使之卡住,由于不规律随机的原因,写入文件的数据也可能是乱码

某个线程要更改共享数据时,先将其锁定,此时资源的状态为“锁定”,其他线程不能更改;直到该线程释放资源,其他的线程才能再次锁定该资源。这样保证了每次只有一个线程进行写入操作,从而保证了多线程情况下数据的正确性。

2、python中with的作用其实就是省去了开启关闭的功能,with lock和lock.acquire()、lock.release()功能是一样的,会自动获取和释放锁(资源)。


0

0 学习 · 1672 问题

查看课程