学习asyncio模块之functools模块中partial的使用

一、基本解释

from functools import partial

"""
典型的,函数在执行时,要带上所有必要的参数进行调用。然后,有时参数可以在函数被调用之前提前获知。
这种情况下,一个函数有一个或多个参数预先就能用上,以便函数能用更少的参数进行调用。
本质是实现了__call__方法,使实例对象可以+()的方式被调用

一般用于回调函数,因为异步中回调函数一般不让传参,如进程池的回调函数,默认第一个参数为子进程返回的结果
如果我们想传一个参数与子进程返回的结果交互,原先那种就不行,而使用partial就可以的
"""


def add(x, y):
    return x + y


push = partial(add, 1)  # 返回一个可被调用的对象,1 默认传给函数的位置参数x
print(push)  # functools.partial(<function add at 0x0000018A6F9D0040>, 1)

# 当想计算1+2时,可以如下操作
ret = push(2)  # 3

二、进程池回调使用


import os
from multiprocessing import Pool


def call_back(child_result, s):
    print(child_result + s)
    return child_result + s


def task(x, y):
    return x + y


if __name__ == '__main__':
    pool = Pool(os.cpu_count())
    jobs = range(100)
    Max = 10000
    for index, v in enumerate(jobs):
        pool.apply_async(func=task, args=(index, v), callback=partial(call_back, 10000))
    pool.close()
    pool.join()
posted @   Alive_2020  阅读(258)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示