返回顶部
首页 > 资讯 > 后端开发 > Python >Python中Condition如何使用
  • 824
分享到

Python中Condition如何使用

2023-06-17 16:06:33 824人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

python中Condition如何使用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Condition 算是 Lock 和 Event 的杂交版本,除了作为

python中Condition如何使用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

Condition 算是 Lock 和 Event 的杂交版本,除了作为 Lock 的基本功能外,还提供了 wait() 和 notify() 作为线程间 "消息通知"。

from threading import *  from time import *  condi = Condition()  def t1():  condi.acquire()  try:  for i in range(10):  print currentThread().name, i  sleep(1)  if (i == 4): condi.wait()

# wait() 释放,并进入等待状态。直到接收到 notify() 发送的消息后再次试图获取锁,继续后续代码执行。

finally:  condi.release()  def t2():  condi.acquire()  try:  for i in range(10):  print currentThread().name, i  sleep(1)  finally:  condi.notify()

# 在释放锁前通知等待的线程准备起床。

condi.release()  Thread(target=t1).start()  Thread(target=t2).start()

输出:

$ ./main.py  Thread-1 0  Thread-1 1  Thread-1 2  Thread-1 3

Thread-1 4 <--- Thread1 释放锁,开始等待。Thread-2 0 <--- Thread2 获得锁,开始执行。

Thread-2 1  Thread-2 2  Thread-2 3  Thread-2 4  Thread-2 5  Thread-2 6  Thread-2 7  Thread-2 8

Thread-2 9 <--- Thread2 发送通知,并释放锁。Thread-1 5 <--- Thread1 收到消息,再次拿到锁,开始未完成的工作。

Thread-1 6  Thread-1 7  Thread-1 8  Thread-1 9

wait() 实际可以分解为 "condi.release(); ... acquire()" 这两个动作。我们可以使用 Condition 包装已有的锁,当然也可以用 with/as 来改善我们的代码。

lock = RLock()  condi = Condition(lock)  def t1():  with condi:  for i in range(10):  print currentThread().name, i  sleep(1)  if (i == 4): condi.wait()  def t2():  with lock:  for i in range(10):  print currentThread().name, i  sleep(1)  condi.notify()  Thread(target=t1).start()  Thread(target=t2).start()

注意调用 notify() 和 notifyall() 的线程必须事先获得锁,否则会抛出异常。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网Python频道,感谢您对编程网的支持。

--结束END--

本文标题: Python中Condition如何使用

本文链接: https://lsjlt.com/news/290415.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python中Condition如何使用
    Python中Condition如何使用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Condition 算是 Lock 和 Event 的杂交版本,除了作为 ...
    99+
    2023-06-17
  • Python中使用Queue和Condition进行线程同步的方法
    Queue模块保持线程同步 利用Queue对象先进先出的特性,将每个生产者的数据一次存入队列,而每个消费者将依次从队列中取出数据 import threading # 导入threading模块...
    99+
    2022-06-04
    线程 方法 Python
  • JS.GetAllChild(element,deep,condition)使用介绍
    复制代码 代码如下: window.GetAllChild = function (element, deep, condition) { if (!!!deep) { deep =...
    99+
    2022-11-15
    GetAllChild
  • python中如何使用中文
    小编给大家分享一下python中如何使用中文,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!使用中文(以及其它非ASCII编码)在...
    99+
    2024-04-02
  • Spring @EventListener 异步中使用condition的问题及处理
    目录@EventListener 异步中使用condition的问题condition 使用例子如需要对事件用condition进行区分同步异步修正的做法,是使用两个事件区分即Spr...
    99+
    2024-04-02
  • java中condition的作用是什么
    java中condition的作用是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、condition 介绍及demoCondition是在java 1....
    99+
    2023-06-15
  • python中如何使用defaultdict
    小编给大家分享一下python中如何使用defaultdict,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;3、网络爬虫;4、嵌入式应用开...
    99+
    2023-06-14
  • Python中Library如何使用
    Python中Library如何使用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 Thread我们可以选择继承 Thread 来实现自己的线程类,或者直接像 ...
    99+
    2023-06-17
  • Python中stuct_time如何使用
    本篇文章给大家分享的是有关Python中stuct_time如何使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、Python stuct_time中模块使用整理提供了各种...
    99+
    2023-06-17
  • Python 中Sympy如何使用
    Python 中Sympy如何使用,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1、表达式与表达式求值:#--------多项式求解--------#定义变量x=sympy.S...
    99+
    2023-06-20
  • python中类如何使用
    这期内容当中小编将会给大家带来有关python中类如何使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、类的成员类的成员包括:属性和方法。属性可以分为:静态属性和实例属性方法可以分为:普通方法、类方法...
    99+
    2023-06-15
  • Python中TensorFlow如何使用
    这期内容当中小编将会给大家带来有关Python中TensorFlow如何使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。TensorFlow 是如何运作的呢 它的整个解决方案是基于张量进行的,张量是 T...
    99+
    2023-06-17
  • Python中Sqlite3如何使用
    今天就跟大家聊聊有关Python中Sqlite3如何使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1. 使用大量操作如果你需要在数据库中一次性插入很多行,那么你真不应该使用 ex...
    99+
    2023-06-17
  • Python中PyQuery如何使用
    本篇文章给大家分享的是有关Python中PyQuery如何使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。安装pip install pyquery初始化...
    99+
    2023-06-17
  • Python中collections.Counter()如何使用
    今天就跟大家聊聊有关Python中collections.Counter()如何使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Counter类Counter类的目的是用来跟踪值出...
    99+
    2023-06-20
  • Python中sys.arg如何使用
    这篇文章将为大家详细讲解有关Python中sys.arg如何使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。使用sys.argv[]的一简单实例,import sys,os&nb...
    99+
    2023-06-17
  • Python中Stackless如何使用
    本篇文章为大家展示了Python中Stackless如何使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。使用Stackless Python的内置模块stackless也可以完成多线程编程,使用起...
    99+
    2023-06-17
  • Python中Mock如何使用
    Python中Mock如何使用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 1. 前言微服务架构下,由于各类服务开发进度的不一致,导致联调工作经常会存在不确定性...
    99+
    2023-06-15
  • Python中musicpy如何使用
    Python中musicpy如何使用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。安装首先在musicpy文件夹里打开cmd, 跑一下pip install -...
    99+
    2023-06-15
  • Python中QSlider如何使用
    这篇文章给大家介绍Python中QSlider如何使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、Qslider控件控件介绍和使用qslider解释为滑块控件,用于方便左右滑动。往往这类滑动更多用于屏幕可以触碰的...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作