Python多线程同步问题
关于Python多线程同步问题
场景描述
场景描述:我们设有两个并发的线程( 线程A 和 线程B ),需要 资源1 和 资源2 .假设 线程A 需要 资源1 , 线程B 需要 资源2 .在这种情况下,两个线程都使用各自的锁,目前为止没有冲突。现在假设,在双方释放锁之前, 线程A 需要 资源2 的锁, 线程B 需要 资源1 的锁,没有资源线程不会继续执行。鉴于目前两个资源的锁都是被占用的,而且在对方的锁释放之前都处于等待且不释放锁的状态。这是死锁的典型情况。所以如上所说,使用锁来解决同步问题是一个可行却存在潜在问题的方案。
使用默认Lock进行同步
特点:
通过 threading.Lock 我们可以将共享资源某一时...
Python的一些内置高效迭代器
关于itertools中一些常见的迭代器函数
1. repeat函数
重复无限次或n次
list(repeat(10,3)) -> [10,10,10]
2. cycle函数
无限循环
cy = cycle("ABCD")
next(cy) --> A
next(cy) --> B
next(cy) --> C
next(cy) --> D
next(cy) --> A
...
3. count函数
count() start, [step] start, start+step, start+2*step, ...
对数据按步长进行倍数累加
ac = count(10)
next(ac) --> 10, 11, 12 .....
python爬虫分享
爬虫
1. 分类
1. 通用爬虫
- Baidu Google Yahoo
2. 聚焦爬虫
- 面向特定主题
2. 爬虫流程模块
1. 网络请求模块
- urllib requests aiohttp
2. 爬虫控制模块
- url队列
3. 信息提取模块
- bs4 xpath 正则
3. 技术分类
构造http:自由度高、根据需求变化
requests
asyncio-aiohttp
使用框架: 按照特定的模式进行爬取
scrapy
pysider
使用selenium: 基于浏览器模拟用户行为
Scrapy架构
Scrapy Engine:引擎,负责其他组件通信,事件调度触发
Spiders:负责处理Resp...
MySQL读书笔记
MySQL分层架构
Server层:涵盖MySQL大多数的核心功能,以及内置函数如存储过程、触发器、视图等
存储引擎:负责数据的存储和提取
从一条查询语句分析:
其中Server层可划分为:
连接器: 负责跟客户端建立连接、获取权限、维持和管理连接
mysql -h ip -P port -u name -p password
show processlist; 查看链接 默认八小时的连接时间 wait_timeout控制
长链接:连接成功后,客户端持续有请求,使用同一连接。
短链接:每次执行完很少的几次操作就断开。
推荐使用长连接 —— MySQL占用内存大
...
Mysql双机热备
MySQL双机热备
1. 准备两台服务器(虚拟机也可以)
A: 1.1.1.1
B: 2.2.2.2
两台服务器均安装同一版本的MySQL数据库,其中将A作为master, B服务器作为slave。
两台服务器中准备好相同的数据(可利用mysqldump进行数据的迁移)
2. 配置master服务器(1.1.1.1)
登陆MySQL数据库
mysql -u xxx -p xxx
建立主从数据库同步账户
mysql> grant replication slave on *.* to 'broot'@'2.2.2.2' identified by 'broot';
mysql> flush privileges;
当创建好用户后,可在B服务器上进行测试
m...