• 学习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!
  • 相关阅读:
    WEEK
    更新yum源
    Centos6.9安装Mysql5.7.18
    gitlab使用
    gitlab安装
    git客户端
    服务器端配置
    错误问题
    服务器端
    01找出数组中重复的数
  • 原文地址:https://www.cnblogs.com/sunxiuwen/p/14543446.html
Copyright © 2020-2023  润新知