Python 3 多线程
2020-12-30 21:05
841 查看
什么是线程
线程是操作系统能够进行运算调度的最小单位
包含在进程中,是进程中的实际运算单位
一个进程中可以并发多个线程,每个线程可执行不同任务
多线程类似于同时执行多个不同程序
优点一:时间长任务放到后台处理
优点二:程序运行速度可能加快
Python 实现多线程
Python提供thread与threading模块
threading比thread模块高级
把一个函数传入并创建Thread实例,调用start方法执行
import threading
#定义多线程执行函数
def test(name,i):
print(name+'执行:',i)
#创建t1\t2两个线程
t1 = threading.Thread(target = test,args=('线程一',100))
t2 = threading.Thread(target = test,args=('线程二',200))
#执行线程
t1.start()
t2.start()
#线程同步
t1.join()
t2.join()
线程池运用
线程与进程一样可通过线程池来管理多线程
ThreadPoolExecutor实现线程池
from concurrent.futures import ThreadPoolExecutor
#定义多线程执行函数
def test(name,i):
print('线程'+name+'执行:',i)
#创建多个线程
thre_name = [] #定义线程池变量
th_pool = ThreadPoolExecutor(max_workers = 2) #创建线程池,上限5个
for i in range(10):
thre_name.append(i)
thre_name[i] = th_pool.submit(test,(thre_name[i],i))
for i in range(0,len(thre_name)):
print('线程%s是否完成'%i,thre_name[i].done())
done()方法用于判断线程是否执行完成
全局锁(GIL)
GIL产生互斥锁来限制线程对共享资源访问
GIL决定多线程不能调用多个CPU内核
CPU密集型操作时不推荐使用多线程,建议使用多进程
IO密集型操作,多线程可明显提高效率
多线程与‘爬虫’可完美结合
相关文章推荐
- Python助力2020高校应届生就业 获取2020校园招聘信息
- Python助力2020考研调剂 各大高校调剂信息(持续更新)
- Python助力2020高校应届生就业 获取2020校园招聘信息
- Python助力2020考研调剂 各大高校调剂信息(持续更新)
- Python助力2020考研调剂 获取2020考研 高校调剂信息
- 5行Python代码调用电脑摄像头
- Python实现图片相似度计算
- 适合新手入门的8个Python项目
- Python网站开发怎么学(9个练习项目)
- 数据可视化有什么好的Python项目?
- 【热荐】必须推荐的7个Python深度学习项目
- Python 利用argparse模块实现脚本命令行参数解析
- Python 基于lxml.etree实现xpath查找HTML元素
- 每日一道python面试题 - Python的函数参数传递
- 每天一道 python 面试题 - Python中的元类(metaclass)
- 每天一道 python 面试题 - Python中的元类(metaclass) 详细版本
- 每日一道python面试题 - Python的实例,类和静态方法揭秘
- [Python] iupdatable包:Timer 类使用介绍
- 用 Python 给微信头像加个圣诞老人(平安果)小图标
- 使用Python进行科学计算:NumPy入门