任务背景
做QT,开启一个额外线程去执行任务,中间需要暂停(不是停止)
解决思路
执行每个类方法时判断是否有暂停信号,如果有,则轮训等待,如果暂停信号改变,则轮训结束。此时一个简单的实现方案是使用类方法装饰器,在执行任务的类方法上加上装饰器,判断是否需要暂停。
实现(类方法装饰器)
class CFunction(object):
pause_testing = False # 暂停信号
def pause(func):
def wrapper(self, *args, **kwargs):
while self.pause_testing:
time.sleep(3)
return func(self, *args, **kwargs)
return wrapper
@pause
def test_func(self):
print("111111111111111")