python基础 - 条件变量

  有一类线程需要满足条件之后才能够继续执行,Python提供了threading.Condition对象用于条件变量线程的支持,它除了能提供RLock()或Lock()的方法外,还提供了 wait()、notify()、notifyAll()方法。

lock_con=threading.Condition([Lock/Rlock]): 锁是可选选项,不传入锁,对象自动创建一个RLock()。

  • wait():条件不满足时调用,线程会释放锁并进入等待阻塞
  • notify():条件创造后调用,通知等待池激活一个线程
  • notifyAll():条件创造后调用,通知等待池激活所有线程
import threading,time
from random import randint

class Producer(threading.Thread):
    def run(self):
        global L
        while True:
            val=randint(0,100)
            print(‘生产者‘,self.name,":Append"+str(val),L)
            if lock_con.acquire():
                L.append(val)
                lock_con.notify()
                lock_con.release()
            time.sleep(3)

class Consumer(threading.Thread):
    def run(self):
        global L
        while True:
            lock_con.acquire()
            if len(L)==0:
                lock_con.wait()
            print(‘消费者‘,self.name,":Delete"+str(L[0]),L)
            del L[0]
            lock_con.release()
            time.sleep(0.25)

if __name__=="__main__":

    L=[]
    lock_con=threading.Condition() #创建条件变量锁
    threads=[]
    for i in range(5):
        threads.append(Producer())
    threads.append(Consumer())
    for t in threads: #启动5个生产,1个消费线程对象
        t.start()
    for t in threads:
        t.join()

原文地址:https://www.cnblogs.com/id19910408/p/8819422.html

时间: 2024-10-16 02:26:11

python基础 - 条件变量的相关文章

Python 全栈开发三 python基础 条件与循环

一. 条件语句 python条件语句是根据一条或多条语句的执行结果的真假(True Or False)来决定代码块的执行. 而执行内容可以多行,以缩进来区分表示同一范围. 1.Python判断条件真假的形式: 真 :  True, 非零,非空(即列表非空),非假等等 假:False, 0,空列表,空字典,空集合,非真等等 2.常见的判断条件: if 语句的判断条件可以用>(大于).<(小于).==(等于).>=(大于等于).<=(小于等于)来表示其关系. 当判断条件为多个值时,可以

python基础(变量,常量,python变量内存管理,变量的三个特征,花式赋值,注释 )

python基础 变量 定义:变量用来描述世间万物变化的状态 组成: 变量名:接收变量值 赋值符号:把变量值赋值给变量名 变量值:就是一个数值 注意: 变量名由数字/字母/下划线组成,不能以数字开头 变量名不能以下关键字命名 ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global',

python基础3 - 变量的基本使用和命名

4.变量的基本使用 4.1 变量定义 在 Python 中,每个变量 在使用前都必须赋值,变量 赋值以后 该变量 才会被创建 等号(=)用来给变量赋值 = 左边是变量名 = 右边是存储在变量中的值 变量名 = 值 变量定义之后,后续就可以直接使用了 4.2 变量的类型 在内存中创建一个变量,会包括: 名称.保存的数据.存储数据的类型.地址(标示) 在 Python 中定义变量是 不需要指定类型(在其他很多高级语言中都需要) 数据类型可以分为 数字型 和 非数字型 数字型 整型 (int) 浮点型

Python基础之变量和变量实现的简单乘法运算

上篇我们知道了关于python的一个hello world的简单程序代码,现在我们来了解关于python里面的变量,我们来了解下,变量是什么? 变量:变量是为了存储程序运算过程中的一些中间结果,为了方便之后的调用,同一变量可以重新赋值. 变量的特点:具有描述性的标记,存储在内存里. 我们来看个列子,简单了解变量乘法运算: x = 3 y = 9 z = x * y print("3*9=",z) print("z=",z) 如图所示:左代码,右交互器输出结果. 我们

python基础_变量

变量的基本使用 程序就是用来处理数据的,而变量就是用来存储数据的 目标 变量定义 变量的类型 变量的命名 01. 变量定义 在 Python 中,每个变量 在使用前都必须赋值,变量 赋值以后 该变量 才会被创建 等号(=)用来给变量赋值= 左边是一个变量名= 右边是存储在变量中的值 变量名 = 值 变量定义之后,后续就可以直接使用了 1) 变量演练1 -- iPython # 定义 qq_number 的变量用来保存 qq 号码 In [1]: qq_number = "1234567"

python基础_变量进阶

变量进阶(理解) 目标 变量的引用 可变和不可变类型 局部变量和全局变量 01. 变量的引用 变量 和 数据 都是保存在 内存 中的 在 Python 中 函数 的 参数传递 以及 返回值 都是靠 引用 传递的 1.1 引用的概念 在 Python 中 变量 和 数据 是分开存储的 数据 保存在内存中的一个位置 变量 中保存着数据在内存中的地址 变量 中 记录数据的地址,就叫做 引用 使用 id() 函数可以查看变量中保存数据所在的 内存地址 注意:如果变量已经被定义,当给一个变量赋值的时候,本

Python基础-2 变量与常量

变量与常量 变量:在程序运行过程中,值会发生变化的量 常量:在程序运行过程中,值不会发生变化的量 无论是变量还是常量,在创建时都会在内存中开辟一块空间,用于保存它的值. 这里有一点需要注意的是,在python中是不需要声明类型的.这是根据Python的动态语言特性而来.变量可以直接使用,而不需要提前声明类型. 变量的定义 Python 中的变量不需要声明类型 a = 4 b = "hello" c = [1,2] d = (1,2) 这些变量都是不需要声明它的类型的,在C和Java中是

python基础:变量、编码、运算符、条件语句、while循环

一.变量命名 a.只能以数字.字母.下划线组成,不能以数字开头 b.不能和内置关键词一样 c.不能是关键字:and.continue.def.elif…… d.变量命名遵从驼峰式命名:my_name 二.编码介绍 ascill 8位 00000000 例如:00000001 unicode 最少16位 0000000000000000+ 例如:0000000000000001 utf-8 最少位数表示 例如:如果¥在用ascill中表示为00000101    在unicode中表示为00000

python基础&amp;条件语句

基础: 1.第一句python的用法 python对后缀名不限制,可以是任意的 导入模块时,如果不是.py文件(以后文件后缀名是py) 2.input的用法: 永远等待,直到用户输入了值.就会将输入的值赋值给一个东西 3.变量名: - 字母 - 数字 - 下划线 ps:数字不能开头:不能是关键字:最好不要和python内置的东西重复*** 关键字:['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif',