【Python零基础入门篇 · 32】:资源共享、全局变量和资源竞争,线程的同步,执行的任务有参数

简介: 【Python零基础入门篇 · 32】:资源共享、全局变量和资源竞争,线程的同步,执行的任务有参数

资源共享、全局变量和资源竞争


资源共享


下图读取只读到0的原因是当写入的时候睡眠了0.2s,这时,读取的函数rdate()就直接读取


9b08d429c91b47139958ac39944fec89.png


想要读取正常,可在wd.start()后加:time.sleep(1)或wd.join()

fbeaca9a24fd4e2f88805817a57237c9.png




全局变量和资源竞争


0e519590579245f59b32e3e8245eaebb.png



b的值如果比较小,没有资源竞争的问题;值大的话计算机计算不过来,延长时间更明显。

69325501164b4f6d9c15ae1fd8c92783.png



线程的同步


同步方式


  • 线程等待join


  • 互斥锁




同步的概念


有两个线程,线程A写入,线程B读取线程A写入的值,线程A先写入,线程B才能读取;线程A、B之间就是一种同步关系。


线程同步:主线程和创建的子线程之间各自执行完自己的代码直到结束。



互斥锁


概念


保证多个线程间共享数据不会出现数据错误问题;保证同一时刻只能有一个线程去操作。


使用方法


threading模块里面定义了Lock函数,通过调用这个函数可以获取到一把互斥锁。

acquire()——加锁 和 release()——解锁:这两个方法必须成对出现,不然会造成死锁现象。


死锁:一直等待对方释放锁的情况就是死锁。会造成应用的停止响应,不能处理其他任务了。


   注意:使用互斥锁的时候要再合适的地方释放锁


581f70ee214f4990ab76fa98a9d4174a.png


执行的任务有参数


通过args=() 向任务传入参数


96badc2321314f4caa3a319ea2f28468.png

相关文章
|
3月前
|
缓存 Java
线程池的核心参数
线程池七大参数解析:核心线程数决定常驻线程,最大线程数控制并发上限,存活时间管理非核心线程生命周期,工作队列缓存待处理任务,线程工厂定制线程属性,拒绝策略应对任务过载,提升系统稳定性与资源利用率。
318 1
|
4月前
|
安全 算法 Java
Java 多线程:线程安全与同步控制的深度解析
本文介绍了 Java 多线程开发的关键技术,涵盖线程的创建与启动、线程安全问题及其解决方案,包括 synchronized 关键字、原子类和线程间通信机制。通过示例代码讲解了多线程编程中的常见问题与优化方法,帮助开发者提升程序性能与稳定性。
199 0
|
Java 存储
线程池的核心参数有哪些?
线程池七大核心参数:核心/最大线程数、线程保持时间及单位、阻塞队列、线程工厂与拒绝策略。
709 79
|
2月前
|
JSON 缓存 开发者
淘宝商品详情接口(item_get)企业级全解析:参数配置、签名机制与 Python 代码实战
本文详解淘宝开放平台taobao.item_get接口对接全流程,涵盖参数配置、MD5签名生成、Python企业级代码实现及高频问题排查,提供可落地的实战方案,助你高效稳定获取商品数据。
|
4月前
|
算法 数据可视化 数据挖掘
基于EM期望最大化算法的GMM参数估计与三维数据分类系统python源码
本内容展示了基于EM算法的高斯混合模型(GMM)聚类实现,包含完整Python代码、运行效果图及理论解析。程序使用三维数据进行演示,涵盖误差计算、模型参数更新、结果可视化等关键步骤,并附有详细注释与操作视频,适合学习EM算法与GMM模型的原理及应用。
|
5月前
|
XML JSON 安全
分析参数顺序对Python requests库进行POST请求的影响。
最后,尽管理论上参数顺序对POST请求没影响,但编写代码时仍然建议遵循一定的顺序和规范,比如URL总是放在第一位,随后是data或json,最后是headers,这样可以提高代码的可读性和维护性。在处理复杂的请求时,一致的参数顺序有助于调试和团队协作。
187 9
|
存储 Java 数据库
如何处理线程池关闭时未完成的任务?
总之,处理线程池关闭时未完成的任务需要综合考虑多种因素,并根据实际情况选择合适的处理方式。通过合理的处理,可以最大程度地减少任务丢失和数据不一致等问题,确保系统的稳定运行和业务的顺利开展。
537 64
|
消息中间件 监控 Java
线程池关闭时未完成的任务如何保证数据的一致性?
保证线程池关闭时未完成任务的数据一致性需要综合运用多种方法和机制。通过备份与恢复、事务管理、任务状态记录与恢复、数据同步与协调、错误处理与补偿、监控与预警等手段的结合,以及结合具体业务场景进行分析和制定策略,能够最大程度地确保数据的一致性,保障系统的稳定运行和业务的顺利开展。同时,不断地优化和改进这些方法和机制,也是提高系统性能和可靠性的重要途径。
314 62
|
8月前
|
Java
线程池的核心参数有哪些 ?
corePoolSize 核心线程数量 maximumPoolSize 最大线程数量 keepAliveTime 线程保持时间,N个时间单位 unit 时间单位(比如秒,分) workQueue 阻塞队列 threadFactory 线程工厂 handler 线程池拒绝策略
|
10月前
|
监控 Java
java异步判断线程池所有任务是否执行完
通过上述步骤,您可以在Java中实现异步判断线程池所有任务是否执行完毕。这种方法使用了 `CompletionService`来监控任务的完成情况,并通过一个独立线程异步检查所有任务的执行状态。这种设计不仅简洁高效,还能确保在大量任务处理时程序的稳定性和可维护性。希望本文能为您的开发工作提供实用的指导和帮助。
386 17

热门文章

最新文章

推荐镜像

更多
下一篇
oss云网关配置