python线程中Condition的原理

2025-12-01 0 48,502

原理分析

1、Python条件变量Condition需要关联互斥锁,同时Condition本身提供了wait、notify、notifyAll方法。

2、用于阻塞、通知其他并行线程,可以访问共享资源。

Condition提供了一种多线程通信机制。如果线程1需要数据,线程1会堵塞等待,然后线程2会制造数据。线程2制造数据后,通知线程1可以获取数据,然后线程1会获取数据。

实例

# !usr/bin/env python
# -*- coding:utf-8 _*-
# 导入线程模块
import threading
 
# 创建条件变量condition
con = threading.Condition()
 
def thread_one(name):
    # 条件变量condition 线程上锁
    con.acquire()
 
    print("{}:成语接龙准备好了吗".format(name))
    # 唤醒正在等待(wait)的线程
    con.notify()
 
    # 等待对方回应消息,使用wait阻塞线程,等待对方通过notify唤醒本线程
    con.wait()
    print("{}:一干二净".format(name))
    # 唤醒对方
    con.notify()
 
    # 等待消息答应
    con.wait()
    print("{}:一天就知道看抖音美女,给你来个简单点的,来了:毛手毛脚".format(name))
    # 唤醒对方
    con.notify()
 
    # 等待消息答应
    con.wait()
    print("{}:哟哟哟,不错不错!".format(name))
    # 唤醒对方
    con.notify()
 
    # 条件变量condition 线程释放锁
    con.release()
 
def thread_two(name):
    # 条件变量condition 线程上锁
    con.acquire()
 
    # wait阻塞状态,等待其他线程通过notify唤醒本线程
    con.wait()
    print("{}:准备好了~开始吧!".format(name))
    # 唤醒对方
    con.notify()
 
    # 等待消息答应
    con.wait()
    print("{}:净你妹啊,没法接...来个简单点的...".format(name))
    # 唤醒对方
    con.notify()
 
    # 等待消息答应
    con.wait()
    print("{}:嘿,这个我知道:脚踏实地".format(name))
    # 唤醒对方
    con.notify()
 
    con.release()
 
if __name__ == "__main__":
 
    # 创建并初始化线程
    t1 = threading.Thread(target=thread_one,args=("A"))
    t2 = threading.Thread(target=thread_two,args=("B"))
 
    # 启动线程 -- 注意线程启动顺序,启动顺序很重要
    t2.start()
    t1.start()
 
    # 阻塞主线程,等待子线程结束
    t1.join()
    t2.join()
 
 
    print("程序结束!")
 
 
'''
输出结果:
 
A:成语接龙准备好了吗
B:准备好了~开始吧!
A:一干二净
B:净你妹啊,没法接...来个简单点的...
A:一天就知道看抖音美女,给你来个简单点的,来了:毛手毛脚
B:嘿,这个我知道:脚踏实地
A:哟哟哟,不错不错!
程序结束!
'''

以上就是python线程中Condition的原理,希望对大家有所帮助。更多Python学习指路:python基础教程

本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:以上部本文内容由互联网用户自发贡献,本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。投诉邮箱:3758217903@qq.com

ZhiUp资源网 python基础 python线程中Condition的原理 https://www.zhiup.top/1203.html

相关