`
qyhdt
  • 浏览: 15307 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

利用python的线程检测实现观察者模式

阅读更多
import threading,time


#观察者线程
class ObserverThread(threading.Thread):
    def __init__(self, param):
        threading.Thread.__init__(self)
        self.param = param
    def run(self):
        self.doCheck()
    def doCheck(self):
        print "观察者---观望中..."
        while True:
            count = self.param.activeCount()
            if count <= 2:
                msg = '被观察者---线程运行结束, 运行观察者逻辑'
                print msg
                print "观察者---运行中..."
                time.sleep(1)
                print "观察者---运行结束"
                break

#被观察者线程
class LogicThread(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)

    def run(self):
        self.doLogic()
    #执行命令
    def doLogic(self):
        msg = "被观察者---程序运行中"
        print msg
        for i in range(0,6):
            msg = "被观察者---运行%s秒" % str(i)
            print msg
            time.sleep(1)


if __name__ == "__main__":
    print "主线程--- 任务启动"
    batchThread = LogicThread()
    batchThread.start()
    checkThread = ObserverThread(threading)
    checkThread.start()
分享到:
评论

相关推荐

    python 观察者模式(示例)

    虽然Python标准库没有提供直接支持观察者模式的组件,但我们可以利用面向对象的特性自行实现。下面将详细讲解观察者模式的原理、实现方式以及如何应用到实际项目中。 **观察者模式的核心概念:** 1. **主题...

    设计模式专题之(十八)观察者模式---设计模式观察者模式示例代码(python--c++)

    观察者模式是软件设计模式中的一种行为模式,它允许一个对象,称为"主题",维护一个依赖于它的对象列表,...通过在Python和C++中实现观察者模式,我们可以更好地理解和应用这个模式,提高代码的可维护性和可扩展性。

    Python编程实战 运用设计模式、并发和程序库创建高质量程序

    在Python中,一些经典的设计模式如工厂模式、单例模式、观察者模式等,都有其独特的应用。例如,工厂模式用于动态创建对象,而单例模式确保类只有一个实例,观察者模式则用于实现对象之间的松耦合通信。理解和运用...

    Python程序中的观察者模式结构编写示例

    在Python中,观察者模式通常通过定义两个主要角色来实现:`Subject`(主题)和`Observer`(观察者)。`Subject`是被观察的对象,它可以是任何类型的数据或状态,当其状态发生改变时,会通知所有注册的观察者。`...

    <Python编程实战:运用设计模式、并发和程序库创建高质量程序>源码

    - **观察者模式**:定义了对象间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。Python的`collections.abc`模块中的`Observer`可以实现这一模式。 2. **并发与并行**...

    Python利用多线程同步锁实现多窗口订票系统(推荐)

    下面详细介绍如何利用Python实现一个多窗口订票系统,以及在此过程中,同步锁是如何确保数据一致性的。 在介绍的实例中,首先定义了一个全局变量`tickets`,代表可售票的总数,初始设为20张。随后,创建了一个`...

    python实现FP-TREE挖掘算法

    Python中实现FP-TREE时,可以利用pandas库处理数据,用networkx或graphviz库绘制图形。同时,自定义数据结构如类或字典来表示FP树,以及设计合适的函数来执行上述步骤。例如,可以创建一个`FPNode`类表示树节点,...

    Python技术设计模式应用方法.docx

    在Python中,可以利用标准库中的`collections.abc`模块中的`Observer`和`Observable`接口来实现观察者模式。不过,由于Python的动态特性,更常用的方法是手动实现。文中提到了定义一个`Subject`类来管理观察者列表,...

    精通python设计模式

    本书涵盖了多种经典的设计模式,如单例模式、工厂模式、观察者模式、装饰器模式、策略模式、代理模式等。单例模式确保一个类只有一个实例,常用于配置管理或线程控制;工厂模式提供了一种创建对象的最佳方式,避免了...

    项目所用到的多线程/网络编程/设计模式

    在处理这些请求时,可能会使用设计模式如工厂模式来创建网络连接对象,或者使用观察者模式来实现实时的数据更新通知。同时,为了确保线程安全,可能会使用锁或其他同步机制来防止并发访问共享资源时出现的问题。 综...

    Python技术设计模式与实践.docx

    2. **元类**:利用Python的元类机制来实现单例模式,这种方式更为灵活和强大。 #### 四、工厂模式 工厂模式是一种常用的创建型设计模式,它的核心思想是通过专门的工厂类来负责对象的创建过程,从而将对象的创建与...

    Python编程实战源码

    在Python中,你可以学习到如工厂模式、单例模式、装饰器模式、观察者模式等。这些模式有助于提高代码的可重用性、可维护性和可扩展性。 2. **并发处理**: Python支持多种并发模型,包括多线程(threading模块)、...

    两个设计模式与一个线程回调

    2. 观察者模式(Observer):观察者模式定义了一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于事件驱动编程,例如GUI组件之间的交互或者消息发布订阅...

    python完整教学包含高级教程

    5. **设计模式**:探讨Python中常见的设计模式,如工厂模式、单例模式、观察者模式等。 6. **性能优化**:包括代码优化技巧,如使用内置函数、减少不必要的计算、使用Cython或PyPy提高性能等。 7. **并发和并行**...

    覆盖一系列高级主题,包括复杂的语法和特性、Python的高级编程技巧、常见的设计模式、并发编程、性能优化等

    设计模式: 探讨常见的设计模式,如工厂模式、单例模式、观察者模式等,以及如何在Python中应用这些模式。 测试和调试: 介绍高级的测试技术和调试工具,以确保代码的质量和可维护性。 性能优化: 提供关于Python...

    Python高级编程.(法)莱德

    14. **设计模式**:学习常见的设计模式,如工厂模式、单例模式、观察者模式等,这些模式可以帮助解决常见编程问题,提高代码复用性和可扩展性。 15. **并发模型**:了解asyncio库,它是Python 3.4引入的一个异步I/O...

    python爬取第一PPT爬虫PPT

    描述提到的“附带详细教程,合适新手学习python”表明这是一个适合初学者的教程,旨在教授如何使用Python进行网页爬虫开发,特别是针对PPT下载。 在标签“python ppt 爬虫”中,我们可以明确爬虫的目标是PPT文件,...

    设计模式-7种开发语言(C#、JAVA、JavaScript、C++、Python、Go、PHP).pdf

    观察者模式定义了一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。常用于事件驱动的编程模型。 10. **策略模式**: 策略模式定义了一系列算法,并将每个算法...

    开发模式demo

    在Java中,`java.util.Observable`和`java.util.Observer`接口提供了实现观察者模式的基础框架。 3. 装饰者模式: 装饰者模式是一种结构型设计模式,它允许在运行时向对象添加新的行为或职责,而无需修改对象的源...

Global site tag (gtag.js) - Google Analytics