首页 > 编程语言 >Python高阶--Condition

Python高阶--Condition

时间:2024-04-29 13:11:07浏览次数:28  
标签:count Python self acquire -- waiting Condition con

Condition条件触发

import threading
import time

class Producer(threading.Thread):
# 生产者函数
def run(self):
global count
while True:
if con.acquire():
# 当count 小于等于1000 的时候进行生产
if count > 1000:
con.wait()
else:
count = count + 100
msg = self.name + ' produce 100, count=' + str(count)
print(msg)
# 完成生成后唤醒waiting状态的线程,
# 从waiting池中挑选一个线程,通知其调用acquire方法尝试取到锁
con.notify()
con.release()
time.sleep(1)

class Consumer(threading.Thread):
# 消费者函数
def run(self):
global count
while True:
# 当count 大于等于100的时候进行消费
if con.acquire():
if count < 100:
con.wait()

            else:
                count = count - 3
                msg = self.name + ' consume 3, count=' + str(count)
                print(msg)
                con.notify()
                # 完成生成后唤醒waiting状态的线程,
                # 从waiting池中挑选一个线程,通知其调用acquire方法尝试取到锁
            con.release()
            time.sleep(1)

def test():
for i in range(2):
p = Producer()
p.start()
for i in range(5):
c = Consumer()
c.start()

if name == 'main':
count = 500
con = threading.Condition()
test()

标签:count,Python,self,acquire,--,waiting,Condition,con
From: https://www.cnblogs.com/jackchen28/p/18165445

相关文章

  • 如何看待Rocky Linux的前途
     为了解决CentOS6/7停止支持的问题,产品新的版本选型把RockyLinux作为候选。  我咨询了一下AI,AI给出的看法如下: RockyLinux是一个由CentOS创始人创建的企业级Linux发行版,旨在填补CentOSLinux8结束支持后的空白。它的前途可以从几个方面来看:技术支持和社......
  • 控制自行车前进/后退/平衡等动作,有必要使用在控制方面使用人工智能算法吗,还是传统的PI
    直接说答案,用不到人工智能算法做控制,现在人工智能算法主要的应用领域为感知学习,比较典型的就是图像识别和自然语言对话系统,而在控制算法上人工智能的解决方案依然不是很成熟,目前世界上唯一一个宣布可以落地的是特斯拉的老马搞出的那个FSD的自动驾驶,除此之外就没有第二个使用智能控......
  • 实验3
    任务一:`#include<stdio.h>include<stdlib.h>include<time.h>include<windows.h>defineN80voidprint_text(intline,intcol,chartext[]);//函数声明voidprint_spaces(intn);//函数声明voidprint_blank_lines(intn);//函数声明intma......
  • 实验3
    task1.c#include<stdio.h>#include<stdlib.h>#include<time.h>#include<windows.h>#defineN80voidprint_text(intline,intcol,chartext[]);//函数声明voidprint_spaces(intn);//函数声明voidprint_blank_lines(intn);//函......
  • rust模块管理示例1
    1、创建如下rust工程不用管其中代码的作用是什么,只要知道有一个main.rs和四个模块s1、s2、s3、s4即可。2、s1模块使用了Rust2015的模块格式,即:需要创建s1文件夹,在s1下创建功能文件hello.rs及名为mod.rs的模块定义文件。s1/hello.rspubfnsay_hello(){println!("hellofr......
  • 洛谷 P5293 [HNOI2019] 白兔之舞
    洛谷传送门所求即为:\[\begin{aligned}f_t&=\sum\limits_{m=0}^L\binom{L}{m}A^m[k\midm-t]\\&=\frac{1}{k}\sum\limits_{m=0}^L\binom{L}{m}A^m\sum\limits_{i=0}^{k-1}\omega_k^{i(m-t)}\\&=\frac{1}{k}\sum\l......
  • 重大更新!开源无代码 / 低代码平台 NocoBase v1.0 正式发布!
    NocoBase是一个极易扩展的开源无代码开发平台。完全掌控,无限扩展,助力你的开发团队快速响应变化,显著降低成本,不必投入几年时间和数百万资金研发,只需要花几分钟部署NocoBase。NocoBase中文官网官方文档在线Demov1.0里程碑历时3年,NocoBase迎来第一次根版本号升级,版本号......
  • openvas(gvm)安装使用参考
    (值得参考)转自:https://blog.csdn.net/weixin_58013902/article/details/129205468   OpenVAS漏洞系统介绍及搭建 (排错)转自:https://zhuanlan.zhihu.com/p/117641338   能解决问题:问题八:当启动扫描任务的时候,出现Interruptedat0%问题七:ERROR:Nousersfound.You......
  • 【C语言】---- return的作用
    return是C语言中的一个关键字,用于从函数中返回值。它有以下几个作用:1返回值return用于将函数的结果返回给调用者。在函数执行过程中,当遇到return语句时,函数将立即停止执行,并将其后的表达式的值作为函数的返回值返回给调用者。例如:```cintadd(inta,intb){return......
  • 【C】---- T1:英寸转厘米
    题目需要一个把英寸单位转换为厘米单位(1英寸=2.54厘米)的程序。编程#include<stdio.h>intmain(void){floatinch;//定义英寸值变量floatcm;//定义厘米值变量scanf("%f",&inch);//输入英寸值cm=inch*2.54;//英寸转换厘米printf("......