Python多线程如何使用
发表于:2025-02-19 作者:千家信息网编辑
千家信息网最后更新 2025年02月19日,今天小编给大家分享一下Python多线程如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了
千家信息网最后更新 2025年02月19日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安全错误
数据库的锁怎样保障安全
火车订票系统软件开发流程
软件开发总结与分享
苹果出现不能验证服务器身份
网络安全大赛人员名单
网络安全管理是谁负责的
进入网络安全模式后如何操作
焦作薄冰软件开发有限公司
网络技术标号法例题
网络安全学校国家队
武侯区欧之轩软件开发部
网络技术有限公司注册
网络安全的文化能力
java数据库为什么同步
网络服务器管理系统的优点
服务器管理卡 修改时间
数据库的主键和外键有什么用
redis查看当前数据库
计算机网络技术一星期几次课
上海游戏 软件开发
处理网络安全事件的通知
数据库两个表匹配
网络安全专业硕士就业方向
当前新疆网络安全的重要性
干软件开发能干到多少年龄
数据库 环境优化
你无法在安全服务器上游戏
服务好售后好的网络安全评估
软件开发和技术服务公司做账
战神引擎数据库端
军队网络安全等级保护条例