Python多线程如何使用
发表于:2024-11-16 作者:千家信息网编辑
千家信息网最后更新 2024年11月16日,今天小编给大家分享一下Python多线程如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了
千家信息网最后更新 2024年11月16日Python多线程如何使用
今天小编给大家分享一下Python多线程如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
一,实用方法
1.线程之间执行是无序的,cpu调度哪个线程就执行哪个线程;
2.主线程等待所有子线程结束后再结束,设置守护线程可以实现当主线程结束时子线程立马结束;
3.设置守护线程:1.
threading.Thread
(daemon=True),2.线程对象.setDaemon(True);4.线程之间共享全局变量,存在资源竞争问题。
'''线程之间执行是无序的,cpu调度哪个线程就执行哪个线程主线程会等待所有子线程结束之后再结束,设置守护线程可以实现当主线程结束时子线程立马结束设置守护线程:1.threading.Thread(daemon=True),2.线程对象.setDaemon(True)线程之间共享全局变量,存在资源竞争问题''' # 导入模块(模块名.py,包名init.py)import threadingimport time def task1(count): # 获取当前线程对象 # t=threading.current_thread() # print('Task1_name:',t.name) print() for i in range(count): print('Task A ',i+1) time.sleep(0.5) def task2(content,count): print('Task2_name:', threading.current_thread().name) for i in range(count): print(f'{content}__Task B ',i+1) time.sleep(0.5) if __name__ == '__main__': t1=threading.Thread(target=task1,name='T1',daemon=True,args=(5,)) t2=threading.Thread(target=task2,name='T2',kwargs={'content':'Yes','count':5}) # 设置守护主线程的第二种方式 # t1.setDaemon(True) t2.setDaemon(True) t1.start() t1.join() # 阻塞函数,t1执行完毕才会向下执行 t2.start() # t2.join() print('Main thread over')
二、补充:Python多线程共享变量资源竞争问题
1.资源竞争问题:sum+=1执行时大致会分为三步(取值、加1、写回),可能刚执行2步cpu就去切换到了另一个线程去执行;
2.解决办法:1.使用join()方法来设置线程同步(效率不高),2.加锁(可以保证同一时刻只有一个线程在执行) 。
'''资源竞争问题:sum+=1执行时大致会分为三步(取值、加1、写回),可能刚执行2步cpu就去切换到了另一个线程去执行解决办法:1.使用join()方法来设置线程同步(效率不高),2.加锁(可以保证同一时刻只有一个线程在执行)''' import threadingimport time sum=0lock=threading.Lock() def add_num1(): global sum for i in range(1000000): # lock.acquire() # 加锁 sum+=1 # lock.release() # 解锁 print(f'{threading.current_thread().name}的计算结果是{sum}') def add_num2(): global sum for i in range(1000000): # lock.acquire() sum+=1 # lock.release() print(f'{threading.current_thread().name}的计算结果是{sum}') if __name__ == '__main__': t1=threading.Thread(target=add_num1) t2=threading.Thread(target=add_num2) t1.start() # 设置阻塞函数,设置线程同步 t1.join() t2.start() print(f'Main的sum值是{sum}')
以上就是"Python多线程如何使用"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。
线程
资源
问题
竞争
之间
知识
篇文章
变量
对象
方法
同步
全局
内容
函数
办法
只有
效率
时刻
模块
结果
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
诺顿网络安全中心设置
维护网络安全的重要性6
网络安全隔离卡价格
高考系统数据库连接失败
制作网站软件开发
供电公司网络安全承诺书样本
打印服务器是什么科目
软件开发同事被辞退
如何做好企业的网络安全防护工作
svn服务器下载 64
深一网络技术有限公司怎么样
我们国家面临的网络安全有哪些
数据库的功能
数据库个人技术总结
数据库 存储 问题
软件开发测试待遇
网络安全答题
成都网络安全培训排名
网络安全职称评审
lol日服服务器
4u24盘位服务器功耗
双cpu服务器主机板维修
网络安全审查实务
安装一个服务器多少钱
短链接 服务器
曙光服务器管理口ip配置
崇明区大型网络技术采购信息
数据库多表连接查询相关代码
软件开发业调整和振兴规划
服务器为什么大涨