多进程运行代码模板

news/2025/12/8 16:55:54/文章来源:https://www.cnblogs.com/dingxingdi/p/19322660
import os
import json
import random
import glob
import multiprocessing as mp
from collections import defaultdict
from tqdm import tqdm# 配置变量:修改这些值来适应不同任务
MAX_BARS = 3  # 可见进度条的最大数量
RESUME_COUNTS_DIR = "/path/to/resume"  # 恢复计数器的目录路径def safe_print(msg: str):tqdm.write(msg)  # 与tqdm兼容的打印def process_item(item, proc_idx, state):"""在这里实现每个任务的工作逻辑。`item` 是任务项。`state` 可以保存每个进程的缓存、计数器等。"""# ... 执行实际工作 ...state["count"] += 1return f"done-{item}"def worker(proc_idx, tasks):touched_dirs = set()counters = defaultdict(int)resume_counts_path=os.path.join(RESUME_COUNTS_DIR, f"file_select_counts_p{proc_idx}.json")# 如果需要恢复,则加载每个进程的计数器if resume_counts_path and os.path.exists(resume_counts_path):try:with open(resume_counts_path, "r", encoding="utf-8") as f:counters.update(json.load(f))except Exception as e:safe_print(f"进程 {proc_idx} 加载计数器失败: {e}")show_bar = proc_idx < MAX_BARSiterator = tqdm(tasks,desc=f"进程 {proc_idx}",unit="task",position=proc_idx if show_bar else 0, # 仅前 N 个占用独立行disable=not show_bar, # 其他进程隐藏进度条leave=True, # 进度条在完成后会保留在终端中,而不是被清除掉ncols=100, # 设置进度条的总宽度为 100 个字符,确保在终端中显示得更整齐)for task_id, item in iterator:process_item(item, proc_idx, counters)if resume_counts_path:with open(resume_counts_path, "w", encoding="utf-8") as f:json.dump(dict(counters), f, indent=2, ensure_ascii=False)return list(touched_dirs)def distribute_tasks(items, num_procs):"""示例:随机抽取与轮询分配相结合的任务分配。根据需要替换为其他分片方式(轮询、块分割、工作窃取等)。"""total_cnt = ...buckets = [[] for _ in range(num_procs)]for i in range(total_cnt):item = random.choices(items, k=1)[0]proc = i % num_procsbuckets[proc].append((i, item))return bucketsdef merge_outputs(dir_list):"""后处理合并每个进程的分片;根据输出布局调整。"""passdef main(root_dir, num_procs):# 发现工作项items = [...]  # 填充你的项列表if not items:safe_print("未找到项。")returnnum_procs = max(1, num_procs)tasks_per_proc = distribute_tasks(items, num_procs)with mp.Pool(processes=num_procs) as pool:results = pool.starmap(worker,[(idx,tasks,)for idx, tasks in enumerate(tasks_per_proc)],)all_dirs = [d for sub in results for d in sub]merge_outputs(all_dirs)if __name__ == "__main__":import sysif len(sys.argv) != 3:safe_print("Usage: python script.py <directory> <num_processes>")sys.exit(1)root_dir = sys.argv[1]num_processes = int(sys.argv[2])main(root_dir, num_processes)

注意事项

  • 多进程代码比较重要的事情:
    • 有恢复功能:上面的代码实现了resume_counts_path
    • 每个进程之间产生的文件不冲突:上面的代码让每个进程并行运行,产生的文件都附带了进程号(比如file_select_counts_p{proc_idx}.json),最后可以通过一个函数合并
  • with mp.Pool(processes=num_procs) as pool:同时启动了num_procsworker函数
    • 每个worker函数处理一个(idx, tasks)元组
    • 应该保证tasks_per_proc的长度与num_procs相同
    • results是一个列表,长度为num_procs,每个元素是每个worker的返回结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/993200.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025具有规模的双卡压式碳钢消防管TOP5权威推荐,甄选靠

在城市化进程加速与消防规范趋严的背景下,消防管道系统作为建筑安全的生命线,其可靠性与高效性愈发关键。2024年数据显示,我国消防管道市场规模超300亿元,年增速达28%,但行业内产品质量参差不齐,超35%的消防隐患…

2025年环保别墅瓷砖五大品牌排行榜:别墅瓷砖推荐供应商有哪

本榜单基于全国市场调研与真实业主口碑,聚焦环保性能、产品品质、服务体系三大核心维度,筛选出十家别墅瓷砖标杆供应商,为家装、别墅项目选型提供客观参考,助力精准匹配专业合作伙伴。 TOP1 推荐:广东和陶家居股…

深入解析:长沙理工《人工智能基础A》实验(上机)报告实验三 电商数据可视化/图像处理

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

纸杯成型机制造商哪家靠谱?2025 超声波纸杯机、纸咖啡杯机推荐(小白易懂)

先打个比方:你要做纸杯,就像烤蛋糕,得先有一台“烤箱”——纸杯成型机。网上一搜“纸杯成型机厂家”“纸杯成型机制造商”“纸杯成型机设备厂家推荐”,跳出一堆名字,价格从几万到几十万,看得头都大。别急,今天用…

2025年GEO 优化服务商怎么收费?:权威榜单精选揭秘

2025年GEO 优化服务商怎么收费?:权威榜单精选揭秘在生成式AI重塑信息获取方式的浪潮中,企业营销战场正经历一场从“关键词排名”向“答案控制权”的根本迁徙。越来越多品牌意识到,用户在ChatGPT、豆包、DeepSeek等…

2025企业贷款服务TOP5权威推荐:破解融资难题,甄选专业

中小微企业是国民经济的毛细血管,但融资难、融资贵始终是制约其发展的核心痛点。据2024年中小企业融资调研数据显示,超60%的企业因缺少融资渠道不了解资金方风险偏好陷入融资困境,仅35%的企业能通过常规途径匹配到适…

【原神UGC】即时弹窗-安装使用教程

安装 下载转存资产 访问奇域资产中心 :https://act.mihoyo.com/ys/prod/ugc/component-store/index.html#/item/1997950307379757056 下载元件。 导入元件方法可参考:https://act.mihoyo.com/ys/ugc/tutorial/course…

TWS耳机电池哪家好?国内优质品牌推荐

TWS耳机的续航能力与使用稳定性,很大程度上依赖于电池的性能表现。作为耳机核心组件之一,TWS耳机电池需要具备小型化、高能量密度、长循环寿命等特性,因此选择技术成熟、品质可靠的供应商尤为重要。目前国内在小型聚…

灰豚GEO系统,以技术硬实力孵化更多的GEO优化服务商

AI搜索正在呈爆发式增长,2025年度AI搜索用户增长率高达43%,这表明搜索习惯正在改变,越来越多的用户利用AI来获得信息和做出购买决策。预计2026年AI用户搜索渗透率将达到100%,特别是B2B领域,用户会使用AI咨询检索进…

2025年全屋定制哪家值得推荐?全屋定制哪家比较好?官方权威榜单解析TOP10品牌

2025年全屋定制哪家值得推荐?全屋定制哪家比较好?官方权威榜单解析TOP10品牌在当下的全屋定制消费浪潮中,越来越多追求生活品质的用户陷入一种深层焦虑:满目琳琅的产品看似丰富,却难掩同质化泛滥与个性化缺失的尴…

2025 爆款制杯机厂家推荐:纸咖啡杯机、纸杯机制造商实力及设备特色解析

在2025年的市场环境下,纸制品包装需求持续攀升,制杯机设备作为食品包装、餐饮等行业的关键生产工具,其质量和性能直接影响着企业的生产效率与产品竞争力。选择一家靠谱的制杯机厂家、实力出众的制杯机制造商,成为众…

2025年选择 GEO 优化服务商的技巧:官方TOP10解析

2025年选择 GEO 优化服务商的技巧:官方TOP10解析在生成式AI重塑信息检索逻辑的今天,品牌与用户的连接正从“关键词排名”转向“答案控制权”的争夺。当用户习惯以对话方式向AI提问,传统SEO的流量漏斗逐渐失效——据…

2025年GEO 优化服务商哪家专业度高?:独家深度测评指南

2025年GEO 优化服务商哪家专业度高?:独家深度测评指南在生成式AI席卷全球的浪潮下,用户获取信息的方式正经历一场从“关键词检索”向“答案直给”的深层迁徙。GEO优化,作为面向ChatGPT、DeepSeek、元宝等生成式引擎…

收藏这篇就够了!2025年太古里烧菜火锅品牌综合实力排行。美食/社区火锅/烧菜火锅/特色美食/火锅烧菜火锅品牌口碑推荐

在成都美食版图中,太古里商圈不仅是潮流地标,更是饕客们探寻地道风味的必争之地。近年来,以“烧菜+火锅”为特色的品类异军突起,凭借其复合醇厚的味觉体验和浓厚的市井烟火气,成为市场新宠。面对众多选择,消费者…

2026年盘点专注子女抚养权纠纷的律师,北京地区推荐哪家

《2025年北京婚姻家事司法白皮书》显示,北京区子女抚养权纠纷年增22%,但胜诉率仅51%,超半数当事人陷入困境。“朝阳全职妈妈被质疑经济能力”“海淀异地父亲因陪伴证据不足败诉”“通州重组家庭继子女抚养争议”,这…

全网公认低温奶十大品牌:奶源优质且口碑过硬

低温奶(巴氏杀菌奶)以其更新鲜、更保留天然活性营养的特点,越来越受到注重健康的消费者青睐。选择一款优质的低温奶,关键在于其背后的奶源品质、生产技术和品牌口碑。我们综合各大平台消费者反馈与行业观察,评选出…

2025年农药包装防水透气塞优质厂家权威推荐:汽车大灯防水透气塞/国产防水透气塞/汽车车灯防水透气塞源头厂家精选

在农药包装工业中,包装的密封性与“呼吸”能力的平衡是一门精密的科学。一个优质防水透气塞,能有效解决因环境温压变化导致的容器“鼓包”或“瘪罐” 问题,据行业数据统计,采用高性能透气方案可将因此类问题导致的…

2025年国内智慧水务厂家综合实力排名与市场格局分析

一、 行业发展背景与驱动因素 随着全球城市化进程加速及水资源短缺问题日益凸显,智慧水务作为城市现代化治理与可持续发展的关键基础设施,正迎来政策与市场的双重机遇。据水利部数据,我国城市供水管网漏损率仍高于部…

北语 12.6 五彩斑斓的梦想

点击查看代码 #include<bits/stdc++.h> using namespace std;typedef long long LL; const int N=1e6+10;int n; LL a[N],s[N];int main() {cin>>n;LL sum=0;for(int i=1;i<=n;i++){scanf("%lld&q…

中国木门十大品牌排行榜:行业标杆与品质之选

随着家居建材行业的蓬勃发展,木门作为家庭装修的重要组成部分,其市场需求持续增长。目前国内木门品牌数量众多,产品质量与设计风格参差不齐,为帮助消费者更好地了解行业主流品牌及产品特点,本文整理了中国木门十大…