zoukankan      html  css  js  c++  java
  • 进程池的回调函数callback

    如下代码:

    from multiprocessing import Pool
    
    
    def func1(n):
        print('in func1')
        return n*n
    
    
    def func2(nn):
        print('in func2')
        print(nn)
    
    
    if __name__ == "__main__":
        pool = Pool(5)
        pool.apply_async(func1, args=(10,))
        pool.close()
        pool.join()

    结果是 in func1

    这是通过回调函数就可以执行func2了:

    from multiprocessing import Pool
    
    
    def func1(n):
        print('in func1')
        return n*n
    
    
    def func2(nn):
        print('in func2')
        print(nn)
    
    
    if __name__ == "__main__":
        pool = Pool(5)
        pool.apply_async(func1, args=(10,), callback=func2)
        pool.close()
        pool.join()

    打印结果:

    in func1
    in func2
    100

    这回调函数的作用就是将函数func1的返回值传给func2,并执行func2函数,所以不能在pool.apply_async里面单独给func2传值,func2接受的参数就是func1的返回值。

    判断func2在子进程还是主进程:

    from multiprocessing import Pool
    import os
    
    def func1(n):
        print('in func1', os.getpid())
        return n*n
    
    
    def func2(nn):
        print('in func2', os.getpid())
        print(nn)
    
    
    if __name__ == "__main__":
        print('主进程:', os.getpid())
        pool = Pool(5)
        pool.apply_async(func1, args=(10,), callback=func2)
        pool.close()
        pool.join()

    打印结果:

    主进程: 14688
    in func1 11928
    in func2 14688
    100

    func2在主进程里面。

    所以回调函数就是回到主进程继续执行。

    结束!

  • 相关阅读:
    My Eclipse
    那一夜,我被梦中笑醒的事之(数据库)
    KTV项目总结
    欢迎来到,数据库联盟!
    学习手工创建表,表关系以及用exists 来查询
    sql 将Null 值转化成空字符串
    jquery toggle
    推荐一个不错的配色网站
    css之zindex
    关于前后端分离与不分离
  • 原文地址:https://www.cnblogs.com/aaronthon/p/9846338.html
Copyright © 2011-2022 走看看