学习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()
人生苦短,我用python!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具