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.效果图: 2.Index.vue主代码: <script lang"ts" setup> import { ref, markRaw } from "vue"; import {VueFlow,useVueFlow,MarkerType,type Node,type Edge } fro…...
CNN:卷积网络中设计1×1夹在主要卷积核如3×3前后的作用
话不多说直接上图举例: 像在 ResNet 的 Bottleneck 结构 中,1x1 卷积 被放置在 3x3 卷积 的前后,这种设计有以下几个关键作用和优势: 1. 降低计算复杂度 问题:直接使用 3x3 卷积计算量较大,尤其是当输入和…...
esp8266 rtos sdk开发环境搭建
1. 安装必要的工具 1.1 安装 Git Git 用于从远程仓库克隆代码,你可以从Git 官方网站下载 Windows 版本的安装程序。安装过程中可保持默认设置,安装完成后,在命令提示符(CMD)或 PowerShell 中输入git --version&#…...
【深度学习】矩阵的核心问题解析
一、基础问题 1. 如何实现两个矩阵的乘法? 问题描述:给定两个矩阵 A A A和 B B B,编写代码实现矩阵乘法。 解法: 使用三重循环实现标准矩阵乘法。 或者使用 NumPy 的 dot 方法进行高效计算。 def matrix_multiply(A, B):m, n …...
DeepSeek模型昇腾部署优秀实践
2024年12月26日,DeepSeek-V3横空出世,以其卓越性能备受瞩目。该模型发布即支持昇腾,用户可在昇腾硬件和MindIE推理引擎上实现高效推理,但在实际操作中,部署流程与常见问题困扰着不少开发者。本文将为你详细阐述昇腾 De…...
从 Spring Boot 2 升级到 Spring Boot 3 的终极指南
一、升级前的核心准备 1. JDK 版本升级 Spring Boot 3 强制要求 Java 17 及以上版本。若当前项目使用 Java 8 或 11,需按以下步骤操作: 安装 JDK 17:从 Oracle 或 OpenJDK 官网下载,配置环境变量(如 JAVA_HOME&…...
mysql架构查询执行流程(图解+描述)
目录 mysql架构查询执行流程 图解 描述 mysql架构查询执行流程 图解 描述 用户连接到数据库后,由连接器处理 连接器负责跟客户端建立连接、获取权限、维持和管理连接 客户端发送一条查询给服务器 服务器先检查查询缓存,如果命中缓存,则立…...
20分钟 Bash 上手指南
文章目录 bash 概念与学习目的第一个 bash 脚本bash 语法变量的使用位置参数管道符号(过滤条件)重定向符号条件测试命令条件语句case 条件分支Arrayfor 循环函数exit 关键字 bash 脚本记录历史命令查询文件分发内容 bash 概念与学习目的 bash࿰…...
事故02分析报告:慢查询+逻辑耦合导致订单无法生成
一、事故背景与现象 时间范围 2022年2月3日 18:11~18:43(历时32分钟) 受影响系统 系统名称角色影响范围dc3订单数据库主库订单生成、事务回滚dc4订单数据库从库数据同步、容灾切换 业务影响 核心业务:手机点餐、C扫B支付订单无法推送至…...
vant2 vue2 两个输入框联动验证遇到的问题
需求是两个输入框,一个输上限A,一个输下限B <van-fieldv-model"formData.upperLimit"name"upperLimit"type"number"label"上限"required:formatter"formatter"/><van-fieldv-model"for…...
硬件工程师入门教程
1.欧姆定律 测电压并联使用万用表测电流串联使用万用表,红入黑出 2.电阻的阻值识别 直插电阻 贴片电阻 3.电阻的功率 4.电阻的限流作用 限流电阻阻值的计算 单位换算关系 5.电阻的分流功能 6.电阻的分压功能 7.电容 电容简单来说是两块不连通的导体加上中间的绝…...
如何使用Docker搭建哪吒监控面板程序
哪吒监控(Nezha Monitoring)是一款自托管、轻量级的服务器和网站监控及运维工具,旨在为用户提供实时性能监控、故障告警及自动化运维能力。 文档地址:https://nezha.wiki/ 本章教程,使用Docker方式安装哪吒监控面板,在此之前,你需要提前安装好Docker. 我当前使用的操作系…...
告别云端!用Ollama本地运行Yi-Coder-1.5B,保护代码隐私的终极方案
告别云端!用Ollama本地运行Yi-Coder-1.5B,保护代码隐私的终极方案 1. 为什么选择本地代码生成模型? 在软件开发过程中,我们经常需要快速生成代码片段、解决编程问题或理解复杂逻辑。传统做法是使用云端代码生成服务,…...
HunyuanVideo-Foley 入门:Node.js环境配置与音效生成API服务封装
HunyuanVideo-Foley 入门:Node.js环境配置与音效生成API服务封装 1. 引言 想象一下,你正在开发一个视频编辑应用,需要为视频片段自动添加合适的音效。手动操作不仅耗时,还很难保证音效与画面的完美匹配。这就是HunyuanVideo-Fol…...
你的热电偶读数总跳?可能是50/60Hz工频干扰!STM32驱动MAX31856的滤波配置避坑指南
热电偶读数跳变?50/60Hz工频干扰的精准诊断与MAX31856滤波实战 工业现场的温度测量工程师们,是否经常遇到这样的困扰:明明硬件连接正确,STM32与MAX31856的驱动代码也按手册编写,但热电偶读数却像心电图一样上下跳动&am…...
mac上安装openclaw从入门到删除
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录安装拉取最新版本拉取对应版本卸载1、卸载openclaw2、卸载openclaw CLI3、确认是否删除参考来源保姆级!Mac 安装小龙虾 OpenClaw 全教程OpenClaw 卸载教程…...
OpenClaw多任务调度:千问3.5-9B并行处理技巧
OpenClaw多任务调度:千问3.5-9B并行处理技巧 1. 为什么需要多任务调度 去年冬天,我接手了一个数据密集型项目,需要同时处理数据分析、邮件生成和文件格式转换三项任务。最初尝试用传统脚本串行执行,结果发现总耗时超过8小时——…...
STM32F103C8T6 + MPU6050 + TB6612:手把手教你从零搭建两轮平衡小车(附完整源码与PCB)
STM32F103C8T6 MPU6050 TB6612:从零构建两轮平衡小车的工程实践 平衡小车一直是嵌入式开发者入门的经典项目,它不仅融合了传感器技术、控制算法和机电一体化设计,还能让你在实践中深入理解PID控制等核心概念。今天我们就来拆解一个基于STM3…...
用普中开发板A234和Proteus 8.16,手把手复刻一个课堂/竞赛用的八路抢答器(附完整代码和避坑点)
用普中开发板A234和Proteus 8.16打造竞赛级八路抢答器实战指南 在电子设计竞赛、课堂互动或社团活动中,一个稳定可靠的抢答器往往是点燃现场气氛的关键设备。市面上虽然有不少成品抢答器,但价格昂贵且功能固定,难以满足个性化需求。而基于51单…...
AI编程CLI工具对比:模型、工具与工作流
在人工智能辅助编程的时代,命令行界面(CLI)工具正成为开发者提升效率的利器。它们将大模型的智能直接集成到终端工作流中,让编写代码、生成文档、解释命令变得前所未有的轻松。Claude Code、Codex、OpenCode和Gemini CLI是这一领域…...
RIT库:ARM Cortex-M高精度周期性中断定时器实现
1. RIT库概述:嵌入式系统中的高精度周期性中断定时器实现RIT(Repetitive Interrupt Timer)库是一个专为ARM Cortex-M系列微控制器设计的轻量级、高精度周期性中断定时器抽象层。其核心目标并非替代硬件外设本身,而是提供一套统一、…...
中国婴幼儿肌肤特点分析报告
中国婴幼儿肌肤受基因、气候、生活习惯等多重因素影响,呈现出屏障先天薄弱、结构发育缓慢、耐受力偏低等独特生理特征,再加上国内气候多样、高频清洁习惯、西方育儿理念本土化不足等后天因素,使得中国宝宝更易出现干燥、敏感、热疹、湿疹等问…...
