python 多线程的使用
多线程主要用于大量的IO操作时的并发执行,以此来提高效率!多进程主要用于大量的计算,进而充分发挥CPU的性能!
这里主要讲述两种多线程的使用:
- threading.Thread
- concurrent.futures.ThreadPoolExecutor
使用第二种方式需要先安装(对于python2.x)
1 | pip install futures |
基本使用
第一种方式的简单使用:(注意:空白行有删减)
1 | # coding=utf8 |
多线程的同步
多线程的可以共享主线程的数据,在操作的时候可能会存在数据不同的问题解决办法是,对于一些代码加锁规定某段时间内只能一个线程访问,直到所被释放!
例子:这个会造成数据不同步
1 | balance = 0 |
加锁实现数据同步,确保操作关键数据时只有一个线程
1 | balance = 0 |
使用ThreadPoolExecutor
使用ThreadPoolExecutor的时候,对于python2.x 需要先安装 pip install futures ,这是在python3中自带的包
基本使用:
1 | import concurrent |
同时由于全局解释器锁的原因,即使很多的线程,CPU 也不能跑满,处分重构解释器,去掉GIL