python 任务管理器
目录
python 任务管理器
带回调函数的任务管理器:
python 任务管理器
class PlaybackManager:def __init__(self):self.states = {'pic': 0, # 图片播放状态'music': 0, # 音乐播放状态'video': 0, # 视频播放状态'ppt': 0, # PPT播放状态'pdf': 0, # PDF播放状态'word': 0 # Word播放状态}self.current_playing = None # 当前正在播放的类型def start_play(self, play_type):"""开始播放指定类型,停止其他所有播放"""# 先停止所有播放self.stop_all()# 开始新的播放self.states[play_type] = 1self.current_playing = play_typeprint(f"开始播放: {play_type}")def stop_play(self, play_type):"""停止指定类型的播放"""if self.states[play_type] == 1:self.states[play_type] = 0if self.current_playing == play_type:self.current_playing = Noneprint(f"停止播放: {play_type}")def stop_all(self):"""停止所有播放"""for play_type in self.states:if self.states[play_type] == 1:self.states[play_type] = 0print(f"停止播放: {play_type}")self.current_playing = Nonedef get_state(self, play_type):"""获取指定播放类型的状态"""return self.states[play_type]def is_playing(self, play_type):"""检查指定类型是否正在播放"""return self.states[play_type] == 1def get_current_playing(self):"""获取当前正在播放的类型"""return self.current_playing# 使用示例
manager = PlaybackManager()# 开始播放图片,自动停止其他
manager.start_play('pic') # 输出: 开始播放: pic# 开始播放音乐,自动停止图片
manager.start_play('music') # 输出: 停止播放: pic, 开始播放: music# 手动停止音乐
manager.stop_play('music') # 输出: 停止播放: music# 检查状态
print(manager.is_playing('video')) # 输出: False
带回调函数的任务管理器:
class EnhancedPlaybackManager:def __init__(self):self.states = {'pic': {'playing': 0, 'stop_callback': None},'music': {'playing': 0, 'stop_callback': None},'video': {'playing': 0, 'stop_callback': None},'ppt': {'playing': 0, 'stop_callback': None},'pdf': {'playing': 0, 'stop_callback': None},'word': {'playing': 0, 'stop_callback': None}}self.current_playing = Nonedef register_callback(self, play_type, stop_callback):"""注册停止回调函数"""self.states[play_type]['stop_callback'] = stop_callbackdef start_play(self, play_type, start_callback=None):"""开始播放,带有回调函数支持"""# 停止当前正在播放的if self.current_playing and self.current_playing != play_type:self._stop_play_type(self.current_playing)# 执行开始回调(如果有)if start_callback:start_callback()# 更新状态self.states[play_type]['playing'] = 1self.current_playing = play_typeprint(f"开始播放: {play_type}")def _stop_play_type(self, play_type):"""内部方法:停止指定类型的播放"""if self.states[play_type]['playing'] == 1:self.states[play_type]['playing'] = 0# 执行停止回调(如果有)callback = self.states[play_type]['stop_callback']if callback:callback()print(f"停止播放: {play_type}")def stop_all(self):"""停止所有播放"""for play_type in self.states:self._stop_play_type(play_type)self.current_playing = None# 其他方法同方案一...# 使用示例
def stop_music():print("执行音乐播放器的停止操作")def stop_video():print("执行视频播放器的停止操作")manager = EnhancedPlaybackManager()
manager.register_callback('music', stop_music)
manager.register_callback('video', stop_video)manager.start_play('music') # 开始播放音乐
manager.start_play('video') # 输出: 执行音乐播放器的停止操作, 开始播放: video