python学习-循环线程

原创 2015年07月07日 17:24:02

近期需要用到线程去执行一个单独的循环任务,必要的时候可以关闭这个任务。在线程中运行关闭没有找到理想的方法,于是自己通过继承线程实现了,感觉比较方便。

先说下正常的使用,方便进行对比。

    

import threading
def task():
    while True:
        print "hello"
        sleep(1)

t = threading.thread(target = func)
t.start()
t.join()
这里会发现任务一直被挂起无法退出任务和结束线程,那么通过状态控制while的执行是基本的方法

我使用最直接分方法把状态控制与线程捆绑在一起,只要执行join函数就可以退出任务关闭线程,让使用者没有感觉差异性。

class LoopThread(threading.Thread):
    def __init__(self, group=None, target=None, name=None,
                args=(), kwargs=None, verbose=None):
        super(LoopThread,self).__init__()
        
        self.excute = False
        self.__target = target
        self.__args = args
        if kwargs is None:
            kwargs = {}
        self.__kwargs = kwargs
        
    def run(self):
        try:
            if self.__target:
                while self.excute:
                    self.__target(*self.__args, **self.__kwargs)
        finally:
            # Avoid a refcycle if the thread is running a function with
            # an argument that has a member that points to the thread.
            del self.__target, self.__args, self.__kwargs
                
    def loopstart(self,state = True):
        self.excute = state
        self.start()
       
    def loopjoin(self,timeout=None):
        self.excute = False
        self.join(timeout)  
这里主要的重载了run方法,提供了新的start和join,使用方法与正常的线程一致

import threading
def task():
    while True:
        print "hello"
        sleep(1)

t = LoopThread(target = task)
t.loopstart(True)#参量控制是否循环执行
sleep(10)
t.loopjoin()

这里就循环执行10秒后任务与线程正常退出





Python标准库(10)------------多进程初步 (multiprocessing包)

threading和multiprocessing (请尽量先阅读Python多线程与同步) multiprocessing包是Python中的多进程管理包。与threadin...
  • happyAnger6
  • happyAnger6
  • 2017年02月02日 12:32
  • 390

转 -- 一行 Python 实现并行化 -- 日常多线程操作的新思路

原址如下: https://segmentfault.com/a/1190000000414339 一行 Python 实现并行化 -- 日常多线程操作的新思路 春节坐在回家的火车上...
  • edwzhang
  • edwzhang
  • 2016年03月02日 14:43
  • 10184

python并发的痛——多线程

伴随着多核时代的到来,怎样充分利用好你的多个CPU的优势成了技术的关注点,那就是多线程多进程编程,二者的区别也很明显,进程是操作系统中拥有资源的最小单位,但是是重量级的。线程是系统调度的最小单位,是轻...
  • xiaoputao0903
  • xiaoputao0903
  • 2014年05月23日 17:44
  • 9823

Python程序员学习路线图

作者:黄哥 链接:https://zhuanlan.zhihu.com/p/21523842 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 Python...
  • Lina_ACM
  • Lina_ACM
  • 2016年09月19日 21:00
  • 3425

Chrome学习笔记(一):线程模型,消息循环

原创文章,转载请注明:转载自Soul Apogee 本文链接地址:Chrome学习笔记(一):线程模型,消息循环 看Chrome已经有一段时间了,但是一直都没有沉淀些内容下来,是该写写笔记...
  • wanfengnianhua
  • wanfengnianhua
  • 2017年04月25日 18:52
  • 133

Chrome学习笔记(一):线程模型,消息循环

http://bigasp.com/archives/478     原创文章,转载请注明:转载自Soul Apogee 本文链接地址:Chrome学习笔记(一):线程模型,消息循环 看Ch...
  • hintonic
  • hintonic
  • 2014年01月08日 11:12
  • 924

Chrome学习笔记(一):线程模型,消息循环

转载自Soul Apogee 本文链接地址:Chrome学习笔记(一):线程模型,消息循环 看Chrome已经有一段时间了,但是一直都没有沉淀些内容下来,是该写写笔记什么的了,免得自己忘记...
  • Mirage520
  • Mirage520
  • 2014年12月04日 20:55
  • 615

张孝祥并发章节-子线程和主线程往复循环(学习笔记)

要求: 子线程先循环10次,然后主线程循环100次,然后子线程循环10次,接着主线程循环100次......如此往复50次。 代码: package cn.javaious.concurre...
  • u012142059
  • u012142059
  • 2014年03月19日 21:21
  • 692

线程暂停(循环计数暂停)

  • 2011年03月17日 17:16
  • 857B
  • 下载

自定义线程消息循环

  • 2013年03月15日 16:52
  • 4KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:python学习-循环线程
举报原因:
原因补充:

(最多只允许输入30个字)