当前位置: 首页 > news >正文

Python代码片段-断点任务

使用Python处理一堆长耗时任务的时候,为了防止异常退出程序或者手动退出程序后丢失任务进度,可用使用断点的方式记录任务进度,下次重载任务后,继续运行上次未完成的任务即可。

这里用json文件作为数据持久化的方式,免去了使用数据库来作为持久的依赖问题,为了一个小的任务来搭建一套数据库,耗时耗力,得不偿失,不如选择本地文件来做简单的持久化,就算丢失部分任务进度,少数任务重新执行所消耗的时间完全处于容忍范围内。另外使用json文件记录任务进度,可用修改json文件来人为干预任务的执行情况,也是不错的一个优点

import json
import time
import osclass Task:def __init__(self, task_file='task_progress.json'):self.task_file = task_fileself.progress = []if os.path.exists(self.task_file):self.load_progress()def load_progress(self):"""加载任务进度"""with open(self.task_file, 'r') as f:data = json.load(f)self.progress = data.get('progress', 0)def save_progress(self):"""保存任务进度"""data = {'progress': self.progress}with open(self.task_file, 'w') as f:json.dump(data, f,indent=4, separators=(',', ': '))f.flush()os.fsync(f.fileno())  # 确保数据已写入磁盘def execute_task(self):legacy_tasks = [t  for t in self.progress if t['finish'] ==0 ]for i, v in enumerate(legacy_tasks):print(f"执行任务 {v['key']} ...")time.sleep(3)  # 模拟任务执行的时间self.mark_finished( v['key']) # 更行进度self.save_progress()  # 每次执行后保存进度print(f"任务 {v['key']} 完成。")print("任务完成!")def flush_progresses(self):tasks = [{"key":"xxx1"},{"key":"xxx2"},{"key":"xxx3"}]self.progress = [ {"key" : t['key'], 'finish':0} for t in tasks]self.save_progress()def mark_finished(self, key):"""标记完成"""print(key)for i, t in enumerate(self.progress) :if t ['key'] ==  key :self.progress[i]['finish'] = 1breakself.save_progress()def count(self):"""查询未完成"""return len( [t for t in self.progress if t['finish'] == 0])if __name__ == "__main__":task = Task()# 第一次生成任务列表,下次任务时候注释掉此行task.flush_progresses()try:task.execute_task()except KeyboardInterrupt:print("\n任务被中断,进度已保存。")

相关文章:

Python代码片段-断点任务

使用Python处理一堆长耗时任务的时候,为了防止异常退出程序或者手动退出程序后丢失任务进度,可用使用断点的方式记录任务进度,下次重载任务后,继续运行上次未完成的任务即可。 这里用json文件作为数据持久化的方式,免…...

mapbox基础,使用geojson加载heatmap热力图层

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️heatmap热力图层样式二、🍀使用geojs…...

03.检测 Zabbix agent

TOC 利用 zabbix_get 工具测试 Zabbix Agent 是否正常 # 安装 zabbix-get [rootUbuntu2204 ~]#apt install -y zabbix-get# 使用zabbix_get 工具查看验证 agent 是否正常 返回1表示正常 [rootUbuntu2204 ~]#zabbix_get -s 10.0.0.110 -p 10050 -k "agent.ping"故障…...

Vue 3 + Vite 项目配置访问地址到服务器某个文件夹的解决方案

前言 在开发 Vue 3 Vite 项目时,我们经常需要将项目部署到服务器的某个特定文件夹下。例如,将项目部署到 /my-folder/ 目录下,而不是服务器的根目录。这时,我们需要对 Vite 和 Vue Router 进行一些配置,以确保项目能…...

JavaScript将:;隔开的字符串转换为json格式。使用正则表达式匹配键值对,并构建对象。多用于解析cssText为style Object对象

// 使用正则表达式匹配键值对,并构建对象 let string2Json(s)>{const r {};s.replace(/;/g, ;).replace(/\;/g, \n).replace(/:/g, :).replace(/\n/g, \n)//合并多个换行符.split(\n).forEach(item > {const [k, v] item.split(:);(k…...

MT-Metrics

MT-Metrics 是一类用于评估生成文本质量的指标,最初用于机器翻译任务,后来扩展到生成任务(如对话生成、文本摘要等)。它的核心思想是通过比较生成文本与参考文本之间的相似性(如词汇重叠、句法结构、语义相似性&#x…...

【数据结构第十六节】实现链式结构二叉树(详细递归图解—呕心沥血版!)

必须有为成功付出代价的决心,然后想办法付出这个代价。云边有个稻草人-CSDN博客 这节课挺抽象(苦笑),没事,我会帮你!干就完了! (目录在路上) 正文开始—— 引言 用链表…...

【Python爬虫(100)】从当下到未来:Python爬虫技术的进阶之路

【Python爬虫】专栏简介:本专栏是 Python 爬虫领域的集大成之作,共 100 章节。从 Python 基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取,还涉及数据处理与分析。无论是新手小白还是进阶开发…...

Vue-Flow绘制流程图(Vue3+ElementPlus+TS)简单案例

本文是vue3Elementplusts框架编写的简单可拖拽绘制案例。 1.效果图&#xff1a; 2.Index.vue主代码&#xff1a; <script lang"ts" setup> import { ref, markRaw } from "vue"; import {VueFlow,useVueFlow,MarkerType,type Node,type Edge } fro…...

CNN:卷积网络中设计1×1夹在主要卷积核如3×3前后的作用

话不多说直接上图举例&#xff1a; 像在 ResNet 的 Bottleneck 结构 中&#xff0c;1x1 卷积 被放置在 3x3 卷积 的前后&#xff0c;这种设计有以下几个关键作用和优势&#xff1a; 1. 降低计算复杂度 问题&#xff1a;直接使用 3x3 卷积计算量较大&#xff0c;尤其是当输入和…...

esp8266 rtos sdk开发环境搭建

1. 安装必要的工具 1.1 安装 Git Git 用于从远程仓库克隆代码&#xff0c;你可以从Git 官方网站下载 Windows 版本的安装程序。安装过程中可保持默认设置&#xff0c;安装完成后&#xff0c;在命令提示符&#xff08;CMD&#xff09;或 PowerShell 中输入git --version&#…...

【深度学习】矩阵的核心问题解析

一、基础问题 1. 如何实现两个矩阵的乘法&#xff1f; 问题描述&#xff1a;给定两个矩阵 A A A和 B B B&#xff0c;编写代码实现矩阵乘法。 解法&#xff1a; 使用三重循环实现标准矩阵乘法。 或者使用 NumPy 的 dot 方法进行高效计算。 def matrix_multiply(A, B):m, n …...

DeepSeek模型昇腾部署优秀实践

2024年12月26日&#xff0c;DeepSeek-V3横空出世&#xff0c;以其卓越性能备受瞩目。该模型发布即支持昇腾&#xff0c;用户可在昇腾硬件和MindIE推理引擎上实现高效推理&#xff0c;但在实际操作中&#xff0c;部署流程与常见问题困扰着不少开发者。本文将为你详细阐述昇腾 De…...

从 Spring Boot 2 升级到 Spring Boot 3 的终极指南

一、升级前的核心准备 1. JDK 版本升级 Spring Boot 3 强制要求 Java 17 及以上版本。若当前项目使用 Java 8 或 11&#xff0c;需按以下步骤操作&#xff1a; 安装 JDK 17&#xff1a;从 Oracle 或 OpenJDK 官网下载&#xff0c;配置环境变量&#xff08;如 JAVA_HOME&…...

mysql架构查询执行流程(图解+描述)

目录 mysql架构查询执行流程 图解 描述 mysql架构查询执行流程 图解 描述 用户连接到数据库后&#xff0c;由连接器处理 连接器负责跟客户端建立连接、获取权限、维持和管理连接 客户端发送一条查询给服务器 服务器先检查查询缓存&#xff0c;如果命中缓存&#xff0c;则立…...

20分钟 Bash 上手指南

文章目录 bash 概念与学习目的第一个 bash 脚本bash 语法变量的使用位置参数管道符号&#xff08;过滤条件&#xff09;重定向符号条件测试命令条件语句case 条件分支Arrayfor 循环函数exit 关键字 bash 脚本记录历史命令查询文件分发内容 bash 概念与学习目的 bash&#xff0…...

事故02分析报告:慢查询+逻辑耦合导致订单无法生成

一、事故背景与现象 时间范围 2022年2月3日 18:11~18:43&#xff08;历时32分钟&#xff09; 受影响系统 系统名称角色影响范围dc3订单数据库主库订单生成、事务回滚dc4订单数据库从库数据同步、容灾切换 业务影响 核心业务&#xff1a;手机点餐、C扫B支付订单无法推送至…...

vant2 vue2 两个输入框联动验证遇到的问题

需求是两个输入框&#xff0c;一个输上限A&#xff0c;一个输下限B <van-fieldv-model"formData.upperLimit"name"upperLimit"type"number"label"上限"required:formatter"formatter"/><van-fieldv-model"for…...

硬件工程师入门教程

1.欧姆定律 测电压并联使用万用表测电流串联使用万用表&#xff0c;红入黑出 2.电阻的阻值识别 直插电阻 贴片电阻 3.电阻的功率 4.电阻的限流作用 限流电阻阻值的计算 单位换算关系 5.电阻的分流功能 6.电阻的分压功能 7.电容 电容简单来说是两块不连通的导体加上中间的绝…...

如何使用Docker搭建哪吒监控面板程序

哪吒监控(Nezha Monitoring)是一款自托管、轻量级的服务器和网站监控及运维工具,旨在为用户提供实时性能监控、故障告警及自动化运维能力。 文档地址:https://nezha.wiki/ 本章教程,使用Docker方式安装哪吒监控面板,在此之前,你需要提前安装好Docker. 我当前使用的操作系…...

告别云端!用Ollama本地运行Yi-Coder-1.5B,保护代码隐私的终极方案

告别云端&#xff01;用Ollama本地运行Yi-Coder-1.5B&#xff0c;保护代码隐私的终极方案 1. 为什么选择本地代码生成模型&#xff1f; 在软件开发过程中&#xff0c;我们经常需要快速生成代码片段、解决编程问题或理解复杂逻辑。传统做法是使用云端代码生成服务&#xff0c;…...

HunyuanVideo-Foley 入门:Node.js环境配置与音效生成API服务封装

HunyuanVideo-Foley 入门&#xff1a;Node.js环境配置与音效生成API服务封装 1. 引言 想象一下&#xff0c;你正在开发一个视频编辑应用&#xff0c;需要为视频片段自动添加合适的音效。手动操作不仅耗时&#xff0c;还很难保证音效与画面的完美匹配。这就是HunyuanVideo-Fol…...

你的热电偶读数总跳?可能是50/60Hz工频干扰!STM32驱动MAX31856的滤波配置避坑指南

热电偶读数跳变&#xff1f;50/60Hz工频干扰的精准诊断与MAX31856滤波实战 工业现场的温度测量工程师们&#xff0c;是否经常遇到这样的困扰&#xff1a;明明硬件连接正确&#xff0c;STM32与MAX31856的驱动代码也按手册编写&#xff0c;但热电偶读数却像心电图一样上下跳动&am…...

mac上安装openclaw从入门到删除

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录安装拉取最新版本拉取对应版本卸载1、卸载openclaw2、卸载openclaw CLI3、确认是否删除参考来源保姆级&#xff01;Mac 安装小龙虾 OpenClaw 全教程OpenClaw 卸载教程…...

OpenClaw多任务调度:千问3.5-9B并行处理技巧

OpenClaw多任务调度&#xff1a;千问3.5-9B并行处理技巧 1. 为什么需要多任务调度 去年冬天&#xff0c;我接手了一个数据密集型项目&#xff0c;需要同时处理数据分析、邮件生成和文件格式转换三项任务。最初尝试用传统脚本串行执行&#xff0c;结果发现总耗时超过8小时——…...

STM32F103C8T6 + MPU6050 + TB6612:手把手教你从零搭建两轮平衡小车(附完整源码与PCB)

STM32F103C8T6 MPU6050 TB6612&#xff1a;从零构建两轮平衡小车的工程实践 平衡小车一直是嵌入式开发者入门的经典项目&#xff0c;它不仅融合了传感器技术、控制算法和机电一体化设计&#xff0c;还能让你在实践中深入理解PID控制等核心概念。今天我们就来拆解一个基于STM3…...

用普中开发板A234和Proteus 8.16,手把手复刻一个课堂/竞赛用的八路抢答器(附完整代码和避坑点)

用普中开发板A234和Proteus 8.16打造竞赛级八路抢答器实战指南 在电子设计竞赛、课堂互动或社团活动中&#xff0c;一个稳定可靠的抢答器往往是点燃现场气氛的关键设备。市面上虽然有不少成品抢答器&#xff0c;但价格昂贵且功能固定&#xff0c;难以满足个性化需求。而基于51单…...

AI编程CLI工具对比:模型、工具与工作流

在人工智能辅助编程的时代&#xff0c;命令行界面&#xff08;CLI&#xff09;工具正成为开发者提升效率的利器。它们将大模型的智能直接集成到终端工作流中&#xff0c;让编写代码、生成文档、解释命令变得前所未有的轻松。Claude Code、Codex、OpenCode和Gemini CLI是这一领域…...

RIT库:ARM Cortex-M高精度周期性中断定时器实现

1. RIT库概述&#xff1a;嵌入式系统中的高精度周期性中断定时器实现RIT&#xff08;Repetitive Interrupt Timer&#xff09;库是一个专为ARM Cortex-M系列微控制器设计的轻量级、高精度周期性中断定时器抽象层。其核心目标并非替代硬件外设本身&#xff0c;而是提供一套统一、…...

中国婴幼儿肌肤特点分析报告

中国婴幼儿肌肤受基因、气候、生活习惯等多重因素影响&#xff0c;呈现出屏障先天薄弱、结构发育缓慢、耐受力偏低等独特生理特征&#xff0c;再加上国内气候多样、高频清洁习惯、西方育儿理念本土化不足等后天因素&#xff0c;使得中国宝宝更易出现干燥、敏感、热疹、湿疹等问…...