zoukankan      html  css  js  c++  java
  • 进程池

    进程池内部维护一个进程序列,当使用时,则去进程池中获取一个进程,如果进程池序列中没有可供使用的进进程,那么程序就会等待,直到进程池中有可用进程为止。

    进程池中有两个方法:

    • apply  同步
    • apply_async  异步
    from  multiprocessing import Process,Pool
    import time,os
    
    def Foo(i):
        time.sleep(1)
        print(i)
        return i+100   #这个返回值是给回调函数的参数
    
    def Bar(arg):     #arg接收Foo函数的返回值
    
        print(os.getpid())
        print(os.getppid())
        print('logger:',arg)
    
    pool = Pool(5)   #定义进程池 最大5个进程数
    
    Bar(1)
    print("----------------")
    
    for i in range(100):
        #pool.apply(func=Foo, args=(i,))
        #pool.apply_async(func=Foo, args=(i,))
        pool.apply_async(func=Foo, args=(i,),callback=Bar)   #callback 回调函数,Foo执行一次,就执行一次回调函数
      
    pool.close()   #这必须在join之前,不然报错
    pool.join()
    print('end')
  • 相关阅读:
    Bessie Goes Moo
    小P的强力值
    Max Flow
    约瑟夫
    Moocryption
    杂务
    排行榜
    银行贷款
    轰炸
    Contaminated Milk
  • 原文地址:https://www.cnblogs.com/ajaxa/p/9146500.html
Copyright © 2011-2022 走看看