Python之Monitor监控线程

在日常工作中常遇到这样的情况,我们需要一个监控线程用于随时的获得其他进程的任务请求,或者我们需要监视某些资源等的变化,一个高效的Monitor程序如何使用python语言实现呢?为了解决上述问题,我将我所使用的Monitor程序和大家分享,见代码

import threading
import random
import time
import sys

class MonitorThread(threading.Thread):
    def __init__(self, event):
        threading.Thread.__init__(self)
        self.threadEvent = event

    def run(self):
        print 'Monitor is ready.\n'
        while True:
            if self.threadEvent.isSet():
                print 'Monitor is running...\n'
                time.sleep(.1)
            else:
                print 'Monitor is stopped.\n'
                break

def main():
    count = 60
    cnf = 0
    event = threading.Event()
    while count >= 0:
        print 'There are %s tasks in queue!' % str(cnf)
        count -= 1
        num = random.randint(1, 100)
        if num%5 == 0:
            if cnf == 0:
                event.set()
                t = MonitorThread(event)
                t.start()
            cnf += 1
        elif num%3 == 0 and num%15 != 0:
            if cnf >= 1:
                event.clear()
                time.sleep(2)
            if cnf >= 1:
                cnf -= 1
    time.sleep(5)
    if cnf >= 1:
        event.clear()

if __name__ == '__main__':
    sys.exit(main())

上述程序会循环60次,每次产生的随机数如果能够被5整除,如果已经有monitor线程在运行,则对计数器cnf进行++的操作,否则会启动一个monitor线程;如果产生的随机数能够被3整除而不能被5整除,则会terminate当前monitor线程,对cnf进行--操作!

程序所模拟的就是是否有任务请求,cnf用来记录当前请求的任务有那些,在我们的实际程序中,我们可以修改上述代码,增加一个等待队列用于记录请求但未得到调用的任务,而event.clear()之前我们则可以对得到请求申请的任务进行处理,当前任务结束调用之后再进行clear操作。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文是我自己在秋招复习时的读书笔记,整理的知识点,也是为了防止忘记,尊重劳动成果,转载注明出处哦!如果你也喜欢,那...
    波波波先森阅读 11,299评论 4 56
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,859评论 18 139
  • 进程和线程 进程 所有运行中的任务通常对应一个进程,当一个程序进入内存运行时,即变成一个进程.进程是处于运行过程中...
    胜浩_ae28阅读 5,137评论 0 23
  • 转载自:https://halfrost.com/go_map_chapter_one/ https://half...
    HuJay阅读 6,174评论 1 5
  • 刚毕业答辩结束,连续熬夜一周,于是想回老家缓一缓,放松一下。于是,很意外的遇上一群喜欢叨逼叨以及攀比的亲戚。 ...
    狐狸sama阅读 1,255评论 0 0