python的多线程应用前景_python 多线程如何实际应用

本文介绍了一个Python线程单元类MThread,该类扩展了threading.Thread,增加了暂停、恢复和停止的功能。通过使用Event对象,实现了线程在运行、暂停和停止状态间的切换。示例代码展示了如何创建并操作MThread实例来控制线程的行为。
摘要由CSDN通过智能技术生成

本帖最后由 SonDanmbi 于 2019-6-28 17:24 编辑

怎么乱码了,辛辛苦苦打的字啊

ok恢复了

给楼主参考下我之前写的一个可控线程单元,和threading.Thread用法差不多,能停止、暂停和恢复

from threading import Event, Thread

from time import sleep

from traceback import format_exc

# 线程单元,传入线程要执行的方法和方法需要的参数

class MThread(Thread):

def __init__(self, tid, func=None, *args):

super().__init__()

self.tid = tid # 线程 id or name

self.__flag = Event() # 用于暂停线程的标识

self.__running = Event() # 用于停止线程的标识

self.__flag.set() # 设置为True, 不暂停

self.__running.set() # 将running设置为True,不停止

self.func = func # 要执行的方法

self.args = args # func的参数

def pause_on(self, pause_time): # 暂停

self.__flag.clear() # 设置为False, 让线程阻塞

sleep(pause_time) # pause_time 秒后恢复

self.resume()

def pause(self): # 暂停

self.__flag.clear() # 设置为False, 让线程阻塞

def resume(self): # 恢复

self.__flag.set() # 设置为True, 让线程停止阻塞

print("线程【%s】苏醒,继续工作" % self.tid)

def stop(self): # 停止

self.__flag.set() # 将线程从暂停状态恢复, 如果已经暂停的话

self.__running.clear() # 设置为False

def run(self):

# while True:

while self.__running.is_set(): # 判断是否可运行

self.__flag.wait() # 再判断是否处于暂停状态,为True时立即返回, 为False时则一直阻塞到内部的标识位为True后继续

try:

# op

if self.func:

self.func(*self.args)

pass

except Exception as e:

print(format_exc(), e)

def pp(a):

print(a)

a = MThread('pp', pp, 'hellow')

a.start()

a.pause_on(3)# 暂停3秒3秒后恢复

sleep(5)

a.stop()#5秒后停止

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值