zoukankan      html  css  js  c++  java
  • Python_多线程与多进程编程

    线程同步技术
    使用线程同步技术有两个原因:

    数据安全问题,多个线程去取同一个数据源中的数据,如果不加同步锁会导致数据的脏读问题。
    协作顺序问题,多个线程完成同一个任务时,线程之间应该有同步和交互来协调各个线程。
    Python的threading模块提供了多种用于线程同步的对象,在后面会一一介绍。

    3.1 Lock/RLock对象
    Lock是比较低级的同步原语,当被锁定以后不属于特定的线程。一个锁有两种状态:locked 和 unlocked。

    如果锁处于unlocked状态,acquire()方法将其修改为locked并立即返回
    如果锁已处于locked状态,则阻塞当前线程并等待其他线程释放锁,然在获取到了锁后将其修改为locked并立即返回。
    release()方法用来将锁的状态由locked修改为unlocked并立即返回,如果锁状态本就是unlocked,调用该方法会抛出异常.
    可重入锁RLock对象也是一种常用的线程同步原语,可以被同一个线程acquire()多次。

    当处于locked状态时,某线程拥有该锁
    当处于unlocked状态时,该锁不属于任何线程。
    RLock对象的acquire()/release()调用时可以嵌套,仅当最后一个或最外层的release()执行结束,锁才会被设置为unlocked状态


    ————————————————
    版权声明:本文为CSDN博主「ChanZany」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_41819729/article/details/105489655

    你有什么心态,就有什么样的人生。管不好自己的心态,注定你就是个弱者。
  • 相关阅读:
    datanode报错Problem connecting to server
    使用命令查看hdfs的状态
    Access denied for user root. Superuser privilege is requ
    ElasticSearch默认的分页参数 size
    SparkStreaming Kafka 维护offset
    【容错篇】Spark Streaming的还原药水——Checkpoint
    251 Android 线性与相对布局简介
    250 Android Studio使用指南 总结
    249 如何解决项目导入产生的中文乱码问题
    248 gradle更新问题
  • 原文地址:https://www.cnblogs.com/LQZ888/p/12705927.html
Copyright © 2011-2022 走看看