news 2026/6/18 11:00:33

python: Parallelism Pattern

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
python: Parallelism Pattern

项目结构:

# encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Parallelism Pattern 并行模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/6/17 20:44 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : settings.py import os # 基础路径 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) IMAGE_SAVE_DIR = os.path.join(BASE_DIR, "jewelry_images") # 并行配置 THREAD_MAX_WORKERS = 16 PROCESS_MAX_WORKERS = 4 # 业务模拟配置 JEWELRY_COUNT = 100 ORDER_COUNT = 50 WAREHOUSE_COUNT = 5 # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Parallelism Pattern 并行模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/6/17 20:46 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : entities.py from dataclasses import dataclass from ParallelismPattern.config.settings import JEWELRY_COUNT, ORDER_COUNT, WAREHOUSE_COUNT @dataclass class Jewelry(object): id: str @dataclass class Order(object): id: str @dataclass class Warehouse(object): id: str class EntityFactory(object): """ 实体工厂:统一生成测试数据 """ @staticmethod def get_jewelries(): """ :return: """ return [Jewelry(f"珠宝_{i:03d}") for i in range(1, JEWELRY_COUNT + 1)] @staticmethod def get_orders(): """ :return: """ return [Order(f"订单_{i:03d}") for i in range(1, ORDER_COUNT + 1)] @staticmethod def get_warehouses(): """ :return: """ return [Warehouse(f"仓库_{chr(65 + i)}") for i in range(WAREHOUSE_COUNT)] # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Parallelism Pattern 并行模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/6/17 20:44 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : logger.py import logging import os from datetime import datetime from ParallelismPattern.config.settings import BASE_DIR # 日志目录 LOG_DIR = os.path.join(BASE_DIR, "logs") os.makedirs(LOG_DIR, exist_ok=True) # 日志格式 logging.basicConfig( level=logging.INFO, format="%(asctime)s | %(levelname)s | %(module)s | %(message)s", handlers=[ logging.FileHandler(os.path.join(LOG_DIR, f"jewelry_{datetime.now().date()}.log"), encoding="utf-8"), logging.StreamHandler() ] ) logger = logging.getLogger("jewelry_system") # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Parallelism Pattern 并行模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/6/17 20:44 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : parallel.py from concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutor, as_completed from ParallelismPattern.utils.logger import logger from ParallelismPattern.config.settings import THREAD_MAX_WORKERS, PROCESS_MAX_WORKERS class ParallelExecutor(object): """ 通用并行执行器,支持线程/进程,完全解耦业务 并行执行器(核心通用组件) """ @staticmethod def run_thread_tasks(task_func, task_list, max_workers=THREAD_MAX_WORKERS): """ 执行多线程任务(IO密集) :param task_func: :param task_list: :param max_workers: :return: """ return ParallelExecutor._run_tasks( executor_cls=ThreadPoolExecutor, task_func=task_func, task_list=task_list, max_workers=max_workers ) @staticmethod def run_process_tasks(task_func, task_list, max_workers=PROCESS_MAX_WORKERS): """ 执行多进程任务(CPU密集) :param task_func: :param task_list: :param max_workers: :return: """ return ParallelExecutor._run_tasks( executor_cls=ProcessPoolExecutor, task_func=task_func, task_list=task_list, max_workers=max_workers ) @staticmethod def _run_tasks(executor_cls, task_func, task_list, max_workers): """ 内部通用执行逻辑 :param executor_cls: :param task_func: :param task_list: :param max_workers: :return: """ results = [] try: with executor_cls(max_workers=max_workers) as executor: future_map = {executor.submit(task_func, item): item for item in task_list} for future in as_completed(future_map): try: res = future.result() results.append(res) logger.info(res) except Exception as e: task_item = future_map[future] err_msg = f"任务执行失败 | 函数={task_func.__name__} | 项={task_item} | 错误={str(e)}" logger.error(err_msg) results.append(err_msg) except Exception as e: logger.error(f"并行执行器异常:{str(e)}") return results
# encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Parallelism Pattern 并行模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/6/17 20:46 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : quality_service.py import time import random class QualityService(object): """ 质检服务 """ @staticmethod def inspect(jewelry): """ :param jewelry: :return: """ time.sleep(0.2) result = random.choice(["合格", "不合格"]) return f"【质检】{jewelry.id}:{result}" # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Parallelism Pattern 并行模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/6/17 20:50 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : image_service.py import os from PIL import Image, ImageDraw from ParallelismPattern.config.settings import IMAGE_SAVE_DIR from ParallelismPattern.utils.logger import logger import time class ImageService(object): """ 图片服务 """ @staticmethod def process(jewelry): """ :param jewelry: :return: """ try: os.makedirs(IMAGE_SAVE_DIR, exist_ok=True) img = Image.new('RGB', (200, 200), color='gold') draw = ImageDraw.Draw(img) draw.text((10, 10), jewelry.id, fill='black') img.save(os.path.join(IMAGE_SAVE_DIR, f"{jewelry.id}.jpg")) time.sleep(0.15) return f"【图片处理】{jewelry.id}:完成" except Exception as e: logger.error(f"图片处理失败 {jewelry.id}: {e}") return f"【图片处理】{jewelry.id}:失败" # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Parallelism Pattern 并行模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/6/17 20:54 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : stock_service.py import time import random class StockService(object): """ 库存服务 """ @staticmethod def check(warehouse): """ :param warehouse: :return: """ time.sleep(0.3) num = random.randint(50, 200) return f"【库存盘点】{warehouse.id}:库存{num}件" # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Parallelism Pattern 并行模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/6/17 20:55 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : notice_service.py import time class NoticeService(object): """ 通知服务 """ @staticmethod def send_ship(order): time.sleep(0.1) return f"【发货通知】{order.id}:已推送短信+邮件" # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Parallelism Pattern 并行模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/6/17 20:57 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : cert_service.py import time import random class CertService(object): """ 证书服务 """ @staticmethod def verify(jewelry): time.sleep(0.25) cert = f"NGTC{random.randint(100000,999999)}" return f"【证书核验】{jewelry.id}:证书{cert} 有效" # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述: Parallelism Pattern 并行模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/6/17 21:06 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : price_service.py import time import random class PriceService(object): """ 定价服务 """ @staticmethod def calculate(jewelry): time.sleep(0.22) price = random.randint(1000, 50000) return f"【定价核算】{jewelry.id}:定价{price}元" # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Parallelism Pattern 并行模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/6/17 21:07 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : task_manager.py from ParallelismPattern.models.entities import EntityFactory from ParallelismPattern.services.quality_service import QualityService from ParallelismPattern.services.image_service import ImageService from ParallelismPattern.services.stock_service import StockService from ParallelismPattern.services.notice_service import NoticeService from ParallelismPattern.services.cert_service import CertService from ParallelismPattern.services.price_service import PriceService from ParallelismPattern.utils.parallel import ParallelExecutor class JewelryTaskManager(object): """ 任务编排中心 新增业务:只需要在这里加一个方法 + 一个服务,无需动并行核心 """ def __init__(self): """ """ self.jewelries = EntityFactory.get_jewelries() self.orders = EntityFactory.get_orders() self.warehouses = EntityFactory.get_warehouses() def run_all_tasks(self): """ 执行全流程任务 :return: """ # IO密集 → 线程池 ParallelExecutor.run_thread_tasks(NoticeService.send_ship, self.orders) ParallelExecutor.run_thread_tasks(StockService.check, self.warehouses) ParallelExecutor.run_thread_tasks(ImageService.process, self.jewelries) # CPU密集 → 进程池 ParallelExecutor.run_process_tasks(QualityService.inspect, self.jewelries) ParallelExecutor.run_process_tasks(CertService.verify, self.jewelries) ParallelExecutor.run_process_tasks(PriceService.calculate, self.jewelries)

调用:

# encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Parallelism Pattern 并行模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/6/17 21:09 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : ParallelismBll.py import time from ParallelismPattern.tasks.task_manager import JewelryTaskManager from ParallelismPattern.utils.logger import logger class ParallelismBll(object): """ """ def demo(self): """ :return: """ logger.info("=== 企业级珠宝并行任务系统 启动 ===") start = time.time() # 启动任务 manager = JewelryTaskManager() manager.run_all_tasks() end = time.time() logger.info(f"=== 系统执行完成 | 总耗时:{end - start:.2f}s ===")

输出:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/18 10:47:29

Parquet过滤优化:从Row Group跳过到Bloom Filter实战

1. 项目概述:为什么“过滤”是Parquet文件的灵魂操作Parquet不是一张静态的表格快照,而是一套精密设计的、为高效筛选而生的数据存储体系。当你看到“Parquet Best Practices: The Art of Filtering”这个标题,别被“Art”这个词迷惑——它不…

作者头像 李华
网站建设 2026/6/18 10:44:10

可解释人工智能(XAI)实战指南:从模型信任到业务落地

1. 这不是给模型“写检讨”,而是给使用者发“说明书”你有没有遇到过这样的情况:一个信贷风控模型把一位月入两万、房贷还款记录完美的客户拒贷了,系统只返回一个冰冷的分数——0.47;或者医院的AI辅助诊断系统标记某张CT影像为“高…

作者头像 李华
网站建设 2026/6/18 10:37:48

高效构建跨平台Switch模拟器:yuzu核心技术深度解析与实战指南

高效构建跨平台Switch模拟器:yuzu核心技术深度解析与实战指南 【免费下载链接】yuzu 任天堂 Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/yu/yuzu yuzu作为目前最先进的任天堂Switch开源模拟器,通过创新的硬件虚拟化技术和跨平…

作者头像 李华
网站建设 2026/6/18 10:35:20

从零构建编译器:词法分析、语法分析与代码生成实战

1. 项目概述:为什么我们要“手搓”一个编译器? “手搓编译器”这个词最近在开发者社区里挺火的,听起来像是个深不可测的“屠龙之术”。很多朋友一听到“编译器”就觉得头大,联想到那些庞大复杂的工业级项目,比如GCC、L…

作者头像 李华
网站建设 2026/6/18 10:28:18

系统架构设计师-关系数据库核心基础概念

一、引言(一)核心概念定义关系数据库是建立在关系模型基础上的数据库,借助集合代数等数学概念和方法处理数据库中的数据,是当前企业级系统数据存储的主流技术。本文梳理的关系模型基础概念、完整性约束等内容,是数据库…

作者头像 李华
网站建设 2026/6/18 10:26:52

告别开题内耗!百考通AI,帮高校学生搞定论文开题核心难题

在高校学术写作中,开题报告绝对是大部分学生的第一道“拦路虎”。不同于正文撰写的内容填充,开题报告是整篇论文的核心骨架,直接敲定研究方向、写作逻辑、研究框架,更是导师审核、论文通过率的关键。但几乎所有学生都会面临共性难…

作者头像 李华