惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
News and Events Feed by Topic
V
V2EX
博客园 - 【当耐特】
Vercel News
Vercel News
雷峰网
雷峰网
爱范儿
爱范儿
WordPress大学
WordPress大学
云风的 BLOG
云风的 BLOG
S
Securelist
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Microsoft Azure Blog
Microsoft Azure Blog
F
Full Disclosure
有赞技术团队
有赞技术团队
Hugging Face - Blog
Hugging Face - Blog
NISL@THU
NISL@THU
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Attack and Defense Labs
Attack and Defense Labs
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
Microsoft Security Blog
Microsoft Security Blog
腾讯CDC
P
Proofpoint News Feed
B
Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
K
Kaspersky official blog
I
InfoQ
Google Online Security Blog
Google Online Security Blog
L
LINUX DO - 最新话题
Project Zero
Project Zero
Engineering at Meta
Engineering at Meta
V
Visual Studio Blog
AI
AI
Schneier on Security
Schneier on Security
B
Blog RSS Feed
T
Tor Project blog
H
Help Net Security
H
Hackread – Cybersecurity News, Data Breaches, AI and More
L
LINUX DO - 热门话题
阮一峰的网络日志
阮一峰的网络日志
S
Security @ Cisco Blogs
T
Threat Research - Cisco Blogs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
C
Cyber Attacks, Cyber Crime and Cyber Security
G
Google Developers Blog
Google DeepMind News
Google DeepMind News
V2EX - 技术
V2EX - 技术
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
A
Arctic Wolf
Webroot Blog
Webroot Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main

博客园 - ®Geovin Du Dream Park™

go: Functional Options Pattern go:Timing Functions Pattern python: Timing Functions Pattern go: Steady-State Pattern python: Steady-State Pattern go: Handshaking Pattern python: Handshaking Pattern go: Fail-Fast Pattern python: Fail-Fast Pattern I go: Deadline Pattern python: Deadline Pattern go: Circuit-Breaker Pattern python: Circuit-Breaker Pattern go: Bulkheads Pattern python: Bulkheads Pattern go: Push & Pull Pattern python: Push & Pull Pattern python: Publish/Subscribe Pattern II go: Publish/Subscribe Pattern python: Publish/Subscribe Pattern go: Futures & Promises Pattern go: Worker Pool Pattern go:Pipeline Pattern python: Worker Pool Pattern python: Pipeline Pattern go: Fan-Out Pattern python: Fan-Out Pattern go: Fan-In Pattern python: Fan-In Pattern Fan-In go: Producer Consumer  Pattern python: Producer Consumer Pattern go: Parallelism Pattern python: Parallelism Pattern go: Reactor Pattern python: Reactor Pattern go: Generators Pattern python: speech to text offline python: Generators Pattern go: Coroutines Pattern python:Coroutines Pattern go: Broadcast Pattern python: Broadcast Pattern python: Bounded Parallelism Pattern go: Bounded Parallelism Pattern python: N-Barrier Pattern go: N-Barrier Pattern python: Semaphore Pattern go: Semaphore Pattern python: Read-Write Lock Pattern go: Read-Write Lock Pattern python: Monitor Pattern go: Monitor Pattern python: Mutex Pattern go: Lock/Mutex Pattern Python: Condition Variable Pattern go:Condition Variable Pattern python: Registry Pattern python: Interpreter Pattern go: Interpreter Pattern go: Registry Pattern go: Memento Pattern go: Command Pattern go: State Pattern go:Template Method Pattern go: Strategy Pattern go: Visitor Pattern go: Observer Pattern go: Mediator Pattern go: Iterator Pattern go: Chain of Responsibility Pattern go: Proxy Pattern go:Decorator Pattern go: Facade Pattern go: Flyweight Pattern go: Composite Pattern go: Singleton Pattern go: Prototype Pattern go: Bridge Pattern go: Adapter Pattern go: Builder Pattern 密码进行加盐哈希 using CSharp,Python,Go,Java go: Abstract Factory Pattern go: Model,Interface,DAL ,Factory,BLL using mysql go: Simple Factory Pattern go: Factory Method Pattern go: goLang 在Windows环境搭建Go语言开发环境 CSharp: Parallel Extensions cpp: class python: 蝴蝶跟随鼠标 javascript: 中国历史人物热力分布图using echart javascript: 中国历史人物热力图 python: 初养龙虾微信纯文字自动回复using workBuddy python: object 入门 python: Factory Method Pattern python: Simple Factory Pattern python: Abstract Factory Pattern 区域化 代码 python: Null Object Pattern python: Builder Pattern python: Adapter Pattern
python: Futures & Promises Pattern
®Geovin Du Dream Park™ · 2026-06-22 · via 博客园 - ®Geovin Du Dream Park™

项目结构:

image

# encoding: utf-8 
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Futures & Promises 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/22 21:35 
# User      :  geovindu
# Product   : PyCharm
# Project   : pydesginpattern
# File      : order_state.py
from enum import Enum

class OrderState(Enum):
    """

    """
    CREATED = "已创建"
    PURCHASING = "采购中"
    PURCHASED = "采购完成"
    DESIGNING = "设计中"
    DESIGNED = "设计完成"
    MANUFACTURING = "加工中"
    MANUFACTURED = "加工完成"
    QUALITY_CHECKING = "质检中"
    QUALIFIED = "质检通过"
    STORING = "入库中"
    COMPLETED = "全部完成"


# encoding: utf-8 
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Futures & Promises 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/22 21:36 
# User      :  geovindu
# Product   : PyCharm
# Project   : pydesginpattern
# File      : base_task.py
from abc import ABC, abstractmethod

class ITask(ABC):
    """

    """
    @abstractmethod
    def execute(self, *args, **kwargs):
        """
        执行任务,返回结果(Promise 实现)
        :param args:
        :param kwargs:
        :return:
        """
        pass

    @abstractmethod
    def get_name(self) -> str:
        """
        任务名称
        :return:
        """
        pass


# encoding: utf-8 
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Futures & Promises 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/22 21:37 
# User      :  geovindu
# Product   : PyCharm
# Project   : pydesginpattern
# File      : logger.py
import logging

def get_logger(name: str):
    """

    :param name:
    :return:
    """
    logger = logging.getLogger(name)
    logger.setLevel(logging.INFO)

    # 避免重复打印
    logger.handlers.clear()

    # 格式:时间 级别 信息
    formatter = logging.Formatter("[%(asctime)s] %(levelname)s %(message)s", datefmt="%Y-%m-%d %H:%M:%S")

    # 控制台输出
    console_handler = logging.StreamHandler()
    console_handler.setFormatter(formatter)
    logger.addHandler(console_handler)

    # 关闭传递,防止重复打印
    logger.propagate = False
    return logger
# encoding: utf-8 
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Futures & Promises 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/22 21:37 
# User      :  geovindu
# Product   : PyCharm
# Project   : pydesginpattern
# File      : purchase_task.py
from FuturesPromisesPattern.core.base_task import ITask
from FuturesPromisesPattern.utils.logger import get_logger
import time

logger = get_logger("PurchaseTask")

class PurchaseTask(ITask):
    """
    任务层(所有 Promise 实现)
    """
    def execute(self):
        logger.info("开始采购 1克拉 GIA 裸石...")
        time.sleep(2)
        result = "1克拉GIA裸石"
        logger.info(f"采购完成:{result}")
        return result

    def get_name(self):
        return "采购任务"


# encoding: utf-8 
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Futures & Promises 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/22 21:39 
# User      :  geovindu
# Product   : PyCharm
# Project   : pydesginpattern
# File      : design_task.py
from FuturesPromisesPattern.core.base_task import ITask
from FuturesPromisesPattern.utils.logger import get_logger
import time

logger = get_logger("DesignTask")

class DesignTask(ITask):
    """
   任务层(所有 Promise 实现)
    """
    def execute(self, stone):
        logger.info(f"根据裸石【{stone}】开始3D设计...")
        time.sleep(1)
        result = "钻戒3D设计图纸"
        logger.info(f"设计完成:{result}")
        return result

    def get_name(self):
        return "设计任务"


# encoding: utf-8 
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Futures & Promises 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/22 21:40 
# User      :  geovindu
# Product   : PyCharm
# Project   : pydesginpattern
# File      : manufacture_task.py
from FuturesPromisesPattern.core.base_task import ITask
from FuturesPromisesPattern.utils.logger import get_logger
import time

logger = get_logger("ManufactureTask")

class ManufactureTask(ITask):
    """
    任务层(所有 Promise 实现)
    """
    def execute(self, stone, design):
        logger.info(f"加工:{stone} + {design}")
        time.sleep(3)
        result = "1克拉定制钻戒成品"
        logger.info(f"加工完成:{result}")
        return result

    def get_name(self):
        return "加工任务"


# encoding: utf-8 
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Futures & Promises 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/22 21:41 
# User      :  geovindu
# Product   : PyCharm
# Project   : pydesginpattern
# File      : quality_task.py
from FuturesPromisesPattern.core.base_task import ITask
from FuturesPromisesPattern.utils.logger import get_logger
import time

logger = get_logger("QualityTask")

class QualityCheckTask(ITask):
    """
    任务层(所有 Promise 实现)
    """
    def execute(self, ring):
        logger.info(f"质检:{ring}")
        time.sleep(1)
        logger.info("质检通过")
        return ring

    def get_name(self):
        return "质检任务"


# encoding: utf-8 
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Futures & Promises 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/22 21:42 
# User      :  geovindu
# Product   : PyCharm
# Project   : pydesginpattern
# File      : storage_task.py
from FuturesPromisesPattern.core.base_task import ITask
from FuturesPromisesPattern.utils.logger import get_logger
import time

logger = get_logger("StorageTask")

class StorageTask(ITask):
    """
    任务层(所有 Promise 实现)
    """
    def execute(self, ring):
        logger.info(f"入库:{ring}")
        time.sleep(1)
        result = f"可销售:{ring}"
        logger.info(f"入库完成:{result}")
        return result

    def get_name(self):
        return "入库任务"



# encoding: utf-8 
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Futures & Promises 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/22 21:43 
# User      :  geovindu
# Product   : PyCharm
# Project   : pydesginpattern
# File      : process_service.py
from concurrent.futures import ThreadPoolExecutor
from FuturesPromisesPattern.core.order_state import OrderState
from FuturesPromisesPattern.utils.logger import get_logger

logger = get_logger("ProcessService")

class JewelryProcessService:
    """
    服务层(流程编排 = Future 链式调度)
    """

    def __init__(self, executor: ThreadPoolExecutor):
        self.executor = executor
        self.state = OrderState.CREATED
        logger.info(f"订单已创建 | 状态:{self.state.value}")

    def update_state(self, new_state: OrderState):
        self.state = new_state
        logger.info(f"状态更新 → {self.state.value}")

    # ========== 链式异步流程(Future + Promise 核心)==========
    def start_full_process(self, purchase, design, manufacture, quality, storage):
        # Step1: 采购 → Future
        self.update_state(OrderState.PURCHASING)
        future_stone = self.executor.submit(purchase.execute)
        stone = future_stone.result()
        self.update_state(OrderState.PURCHASED)

        # Step2: 设计
        self.update_state(OrderState.DESIGNING)
        future_design = self.executor.submit(design.execute, stone)
        design_out = future_design.result()
        self.update_state(OrderState.DESIGNED)

        # Step3: 加工
        self.update_state(OrderState.MANUFACTURING)
        future_product = self.executor.submit(manufacture.execute, stone, design_out)
        product = future_product.result()
        self.update_state(OrderState.MANUFACTURED)

        # Step4: 质检
        self.update_state(OrderState.QUALITY_CHECKING)
        future_qualified = self.executor.submit(quality.execute, product)
        qualified = future_qualified.result()
        self.update_state(OrderState.QUALIFIED)

        # Step5: 入库
        self.update_state(OrderState.STORING)
        future_final = self.executor.submit(storage.execute, qualified)
        final = future_final.result()
        self.update_state(OrderState.COMPLETED)

        return final

调用:

# encoding: utf-8 
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Futures & Promises 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/22 21:45 
# User      :  geovindu
# Product   : PyCharm
# Project   : pydesginpattern
# File      : FuturesPromisesBll.py
from concurrent.futures import ThreadPoolExecutor
from FuturesPromisesPattern.service.process_service import JewelryProcessService

# 任务注入(Promise)
from FuturesPromisesPattern.tasks.purchase_task import PurchaseTask
from FuturesPromisesPattern.tasks.design_task import DesignTask
from FuturesPromisesPattern.tasks.manufacture_task import ManufactureTask
from FuturesPromisesPattern.tasks.quality_task import QualityCheckTask
from FuturesPromisesPattern.tasks.storage_task import StorageTask

class FuturesPromisesBll(object):
    """

    """
    def demo(self):
        """

        :return:
        """
        executor = ThreadPoolExecutor(max_workers=5)

        # 实例化所有任务
        purchase = PurchaseTask()
        design = DesignTask()
        manufacture = ManufactureTask()
        quality = QualityCheckTask()
        storage = StorageTask()

        # 流程服务
        process = JewelryProcessService(executor)

        # 启动全流程
        final_result = process.start_full_process(
            purchase, design, manufacture, quality, storage
        )

        print("\n" + "=" * 60)
        print(f"✅ 订单最终交付:{final_result}")
        print("=" * 60)

输出:

image

https://github.com/lucasnscr/Multithreading-Design-Patterns/tree/main/future-promises-pattern/src/main
https://archman.dev/docs/design-patterns/concurrency-patterns/futures-promises-async-await

哲学管理(学)人生, 文学艺术生活, 自动(计算机学)物理(学)工作, 生物(学)化学逆境, 历史(学)测绘(学)时间, 经济(学)数学金钱(理财), 心理(学)医学情绪, 诗词美容情感, 美学建筑(学)家园, 解构建构(分析)整合学习, 智商情商(IQ、EQ)运筹(学)生存.---Geovin Du(涂聚文)